我使用 Sequelize 的 DB 模型不进行迁移
Posted
技术标签:
【中文标题】我使用 Sequelize 的 DB 模型不进行迁移【英文标题】:My models for DB using Sequelize don't doing migration 【发布时间】:2017-01-30 00:00:05 【问题描述】:我有两个模型:
user.js
'use strict'
module.exports = function(sequelize, DataTypes)
var User = sequelize.define('User',
gid:
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
,
email:
type: DataTypes.STRING,
allowNull: false
,
password:
type: DataTypes.STRING,
allowNull: false
,
newsletters:
type: 'NUMERIC',
allowNull: false,
defaultValue: '1'
,
status:
type: 'NUMERIC',
allowNull: false,
defaultValue: '1'
,
date_verified:
type: DataTypes.TIME,
allowNull: true
,
date_created:
type: DataTypes.TIME,
allowNull: false,
defaultValue: sequelize.fn('now')
,
date_updated:
type: DataTypes.TIME,
allowNull: false,
defaultValue: sequelize.fn('now')
,
tableName: 'user'
,
classMethods:
associate: function(models)
User.belongsTo(models.User);
);
User.schema("security");
return User;
;
role.js
'use strict'
module.exports = function(sequelize, DataTypes)
var Role = sequelize.define('Role',
gid:
type: DataTypes.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true
,
name:
type: DataTypes.STRING,
allowNull: false
,
status:
type: 'NUMERIC',
allowNull: false,
defaultValue: '1'
,
date_created:
type: DataTypes.TIME,
allowNull: false,
defaultValue: sequelize.fn('now')
,
date_updated:
type: DataTypes.TIME,
allowNull: false,
defaultValue: sequelize.fn('now')
,
tableName: 'role'
,
classMethods:
associate: function(models)
Role.hasMany(models.User);
);
Role.schema("security");
return Role;
;
和 index.js 在同一个 "models" 文件夹中,它是为 Sequelize 自动生成的。
我只用我的连接变量更改了config.json,并成功连接。
但是,当我放入控制台时
node_modules/.bin/sequelize db:migrate
给我看这个:
Sequelize [Node: 4.4.4, CLI: 2.1.0, ORM: 3.12.2, pg: ^4.4.3]
Loaded configuration file "config\config.json".
Using environment "development".
Using gulpfile c:\Users\Ulises\MVO-app\server\node_modules\sequelize-cli\lib\gulpfile.js
Starting 'db:migrate'...
Finished 'db:migrate' after 180 ms
No migrations were executed, database schema was already up to date.
在我的数据库中不要创建模型
【问题讨论】:
【参考方案1】:-这对我有用-
请在您的数据库中找到名为“SequelizeMeta”的表并删除您要迁移的相关记录。
然后在你的控制台上运行它。
$ npx sequelize-cli db:migrate
【讨论】:
【参考方案2】:请检查您的数据库,表SequelizeMeta
,并删除与文件迁移对应的名称的记录。 Sequelize 会将迁移记录到该表中,再次运行迁移时,无法重新运行迁移文件。
【讨论】:
【参考方案3】:这个问题是很久以前的问题了,但在一个全新的设置中,我正在配置一个脚本 yarn migrate
,它代表:sequelize db:migrate:undo:all && sequelize db:migrate && sequelize db:seed:all && node grantsSeeders.js
,是我对 DB 的授权,是 grantsSeeders.js
成功刷新所有迁移。
【讨论】:
【参考方案4】:我正在编写用户注册应用程序。但列没有进入数据库。我使用sequelize db:migrate:undo:all && sequelize db:migrate
解决了这个问题。
【讨论】:
【参考方案5】:这个sequelize db:migrate:undo:all
对我有用
【讨论】:
以上是关于我使用 Sequelize 的 DB 模型不进行迁移的主要内容,如果未能解决你的问题,请参考以下文章