【问题标题】:How to stop Sequelize to drop existing table?如何阻止 Sequelize 删除现有表?
【发布时间】:2018-06-13 03:44:23
【问题描述】:

我正在使用 express.js 在 nodejs 中创建一个应用程序,我需要连接 Oracle 数据库,我为此使用 Sequelize ORM 框架,我创建了模型并尝试访问数据库,它删除了现有表并创建了新表,我我的数据丢失了,如何停止删除表并使用 Sequelize orm 与现有表和数据同步?

【问题讨论】:

  • 我们能看到你用来连接数据库的 sequelize.js 代码吗?
  • sequelize.sync().then(function() { ...如果成功则调用... }, function(err) { ...如果发生错误则调用... });

标签: sequelize.js


【解决方案1】:

设置 force : false 当 force 为真时,这意味着您允许 sequelize 删除现有表并创建新表。

sequelize.sync({
  force: false,
}).then(() => {
        // your code 
});

【讨论】:

    【解决方案2】:

    模型是自动映射的,你只需要定义它们。您可以使用https://github.com/sequelize/sequelize-auto直接从db生成模型文件,然后根据需要定义关联

    【讨论】:

    • 我可以为 Oracle 使用 Sequelize-auto 吗?我看不到 Oracle 的方言选项
    • 官方没有,有这个插件github.com/adeo-proxideco/sequelize-oracle可以试试,个人没用过
    • 我只使用这个插件,如果这不是官方的,请告诉我哪个是使用nodejs连接Oracle db的最佳orm框架工作(应该是ORM框架),我在互联网上搜索了很多, 我没能找到一个好的
    • 帮不了你,不知道有没有更好的Oracle Db插件
    【解决方案3】:

    不要打电话

    sequelize.sync()
    

    只直接连接db,sync会掉db,我不推荐使用sync进行自动db迁移,而是使用sequelize migration进行系统db迁移。

    const sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname');
    

    【讨论】:

    • 没有sync(),模型怎么用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多