使用 Postgres 的 Knex 迁移总是说 'Already up to date'
Knex migrations with Postgres always say 'Already up to date'
我正在尝试使用 Knex 迁移更改我的 Postgres 数据库,但它们不起作用。
我的 knexfile.js 看起来像这样:
module.exports = {
development: {
client: 'pg',
connection: {
database: 'cms_dev',
},
},
};
然后我有一个 db.js
看起来像这样:
const config = require('../knexfile.js');
const env = 'development';
const knex = require('knex')(config[env]);
module.exports = knex;
knex.migrate.latest([config]);
如果我从一个新的数据库开始,我的第一次迁移工作正常,但如果我尝试用一个新的(第二次)迁移更新数据库,它什么也不做。
当我尝试 运行 knex migrate:latest --env development
时,它说:
Using environment: development
Already up to date
*****编辑*****
我最终生成了另一个新的(第 3 次)迁移,并粘贴了与前一个被忽略的代码完全相同的代码,但它起作用了。不知道为什么第二次迁移默默地失败而第三次迁移成功了。
我想通了这个问题。我忘记配置 nodemon
以忽略我的迁移文件夹。
因为我在db.js
中有这一行:
knex.migrate.latest([config]);
如果我在创建迁移时完全保存,我的服务器将重新启动并导致最新的和不完整的迁移被触发。由于仅迁移 运行 一次,Knex 会认为数据库已经是最新的。
如果您只是想从头开始重新运行 任何迁移,请删除您选择的 schema/database 中的迁移表。
我正在尝试使用 Knex 迁移更改我的 Postgres 数据库,但它们不起作用。
我的 knexfile.js 看起来像这样:
module.exports = {
development: {
client: 'pg',
connection: {
database: 'cms_dev',
},
},
};
然后我有一个 db.js
看起来像这样:
const config = require('../knexfile.js');
const env = 'development';
const knex = require('knex')(config[env]);
module.exports = knex;
knex.migrate.latest([config]);
如果我从一个新的数据库开始,我的第一次迁移工作正常,但如果我尝试用一个新的(第二次)迁移更新数据库,它什么也不做。
当我尝试 运行 knex migrate:latest --env development
时,它说:
Using environment: development
Already up to date
*****编辑*****
我最终生成了另一个新的(第 3 次)迁移,并粘贴了与前一个被忽略的代码完全相同的代码,但它起作用了。不知道为什么第二次迁移默默地失败而第三次迁移成功了。
我想通了这个问题。我忘记配置 nodemon
以忽略我的迁移文件夹。
因为我在db.js
中有这一行:
knex.migrate.latest([config]);
如果我在创建迁移时完全保存,我的服务器将重新启动并导致最新的和不完整的迁移被触发。由于仅迁移 运行 一次,Knex 会认为数据库已经是最新的。
如果您只是想从头开始重新运行 任何迁移,请删除您选择的 schema/database 中的迁移表。