如何使用 postgresql 删除所有 Sequelize.js 的表?
How can I drop all tables with Sequelize.js using postgresql?
我正在尝试:
if (process.NODE_ENV === 'test') {
foreignKeyChecks = 0;
forceSync = true;
} else {
foreignKeyChecks = 1;
forceSync = false;
}
global.db.sequelize.query("SET FOREIGN_KEY_CHECKS = " + foreignKeyChecks).then(function() {
return global.db.sequelize.sync({
force: forceSync
});
}).then(function() {
return global.db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1');
}).then(function() {
var server;
console.log('Initialzed database on:');
console.log(config.db);
return server = app.listen(port, function() {
return console.log("Server listening at http://" + (server.address().address) + ":" + (server.address().port));
});
})["catch"](function(err) {
return console.log('err', err);
});
module.exports = app;
但我得到:SequelizeDatabaseError: unrecognized configuration parameter "foreign_key_checks"
我假设我不能在 postgres 中使用该关键字?但是是否有等效的方法来删除所有表并重新创建?
我对那个 JavaScript 库一无所知,但 Postgres 提供了一个命令来删除用户拥有的所有内容:
drop owned by <our_user_name cascade
只有当所有东西都归同一用户所有并且该用户没有您使用的某些表(或视图、序列...)时才有效不是想降。
手册中的更多详细信息:
http://www.postgresql.org/docs/current/static/sql-drop-owned.html
这是一个更新的答案,针对像我一样来到这里的 google 员工。
Sequelize 提供拖放功能:
drop(options) => promise
Drop all tables defined through this sequelize instance. This is done by calling Model.drop on each model. Sequelize docs
例子
var sequelize = new Sequelize(config.database, config.username, config.password, config);
var someModel = sequelize.define('somemodel', {
name: DataTypes.STRING
});
sequelize
.sync() // create the database table for our model(s)
.then(function(){
// do some work
})
.then(function(){
return sequelize.drop() // drop all tables in the db
});
用于清除数据并从头开始重新创建所有数据(如在测试中):
sequelize.sync({force: true});
对于任何使用 sequelize-cli 寻找解决方案的人,请查看此 link Sequelize CLI:
你可以 运行:
sequelize_cli db:drop
sequelize_cli db:create
使用 cli 工具创建或删除数据库。这样你就会有一个空的数据库。
我正在尝试:
if (process.NODE_ENV === 'test') {
foreignKeyChecks = 0;
forceSync = true;
} else {
foreignKeyChecks = 1;
forceSync = false;
}
global.db.sequelize.query("SET FOREIGN_KEY_CHECKS = " + foreignKeyChecks).then(function() {
return global.db.sequelize.sync({
force: forceSync
});
}).then(function() {
return global.db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1');
}).then(function() {
var server;
console.log('Initialzed database on:');
console.log(config.db);
return server = app.listen(port, function() {
return console.log("Server listening at http://" + (server.address().address) + ":" + (server.address().port));
});
})["catch"](function(err) {
return console.log('err', err);
});
module.exports = app;
但我得到:SequelizeDatabaseError: unrecognized configuration parameter "foreign_key_checks"
我假设我不能在 postgres 中使用该关键字?但是是否有等效的方法来删除所有表并重新创建?
我对那个 JavaScript 库一无所知,但 Postgres 提供了一个命令来删除用户拥有的所有内容:
drop owned by <our_user_name cascade
只有当所有东西都归同一用户所有并且该用户没有您使用的某些表(或视图、序列...)时才有效不是想降。
手册中的更多详细信息:
http://www.postgresql.org/docs/current/static/sql-drop-owned.html
这是一个更新的答案,针对像我一样来到这里的 google 员工。
Sequelize 提供拖放功能:
drop(options) => promise
Drop all tables defined through this sequelize instance. This is done by calling Model.drop on each model. Sequelize docs
例子
var sequelize = new Sequelize(config.database, config.username, config.password, config);
var someModel = sequelize.define('somemodel', {
name: DataTypes.STRING
});
sequelize
.sync() // create the database table for our model(s)
.then(function(){
// do some work
})
.then(function(){
return sequelize.drop() // drop all tables in the db
});
用于清除数据并从头开始重新创建所有数据(如在测试中):
sequelize.sync({force: true});
对于任何使用 sequelize-cli 寻找解决方案的人,请查看此 link Sequelize CLI:
你可以 运行:
sequelize_cli db:drop
sequelize_cli db:create
使用 cli 工具创建或删除数据库。这样你就会有一个空的数据库。