使用sequelize操作数据库,后期如何新增字段问题
发布于 7 年前 作者 xumjs8623 15393 次浏览 来自 问答

请问一下,使用sequelize来操作数据库,但是项目进行到后期肯定会有字段的新增,那么这个时候一般都是怎么操作的呢,是自己手动去数据库新增,然后修改sequelize定义的模型么,还是有其他的方法

14 回复

ORM一般都有sync操作。在程序运行时调用,把model跟数据表同步。

而sequelize需要你手动定义migration(数据库迁移)。

Up定义迁移(升级),Down定义回滚,回滚一般用不到。

然后写配置文件,先升级本地的数据库表,没问题后,再升级线上的。 文档: http://docs.sequelizejs.com/manual/tutorial/migrations.html

当然我觉得sequelize的migration并不好用。如果新增的字段,需要依赖于其他字段,那就没办法了,自己手写个脚本逐个改吧

同楼上,需要走migration。这是常规流程。

好的,谢谢,我研究研究,就是感觉有点繁琐。

Model.sync({ alter: true }); 模型新增字段会自动在数据库中添加

Model.sync({ alter: true })

很有用,在每一个Model返回之前添加sync,启动时候会自动修改适配至对应字段。

@yesvods 好的 谢谢

@xvrzhaoUser.sync({alter: true}),不是sequelize.sync({alter: true}),如果是sequelize请用sequelize.sync({force: true})(慎用)

@xvrzhao O(∩_∩)O哈哈~,修正了

sequelize.sync({force: true}) 把数据删除了,但是没有新增我要的那个字段

你要做字段预留

所以我理解 要想后期增加字段 并且同步到数据库 就这样么 // sync the models to db sequelize .sync({alter: true}) .then(() => console.log(‘Completed!’)) 有没有大佬解惑

@yuedun 我也加了Model.sync({ alter: true });,但是在添加associations的时候,就一直报错: Unhandled rejection SequelizeDatabaseError: Deadlock found when trying to get lock; try restarting transaction,只有删掉这一行才行。

回到顶部