migration failed with error: table.integer(...).references(...).on(...).OnDelete is not a function Knex.js postgres
migration failed with error: table.integer(...).references(...).on(...).OnDelete is not a function Knex.js postgres
我知道我有 postgres 工作,我在 knexfile.js 中有用户名和密码以及数据库名称。 psql 也是 运行ning。我遇到的问题 我在尝试使用我的 table 中的一个 运行 此命令时遇到问题。我尝试了很多不同的步骤,比如添加 table 而不是 on (我读到它是一个别名。我尝试了 foreign() 而不是 integer() 但没有任何进展。请帮忙或者指出一个缺陷据我所知。谢谢
knex migrate:latest
我收到这个错误
Using environment: development
migration failed with error: table.string(...).references(...).on(...).OnDelete is not a function
migration file "20200525002912_personal_todos.js" failed
TypeError: table.integer(...).references(...).on(...).OnDelete is not a function
at TableBuilder._fn (/home/misterjoe/personal_projects/group-note-todo-api/db/migrations/20200525002912_personal_todos.js:5:59)
这是我的 personal_todos.js 文件迁移
exports.up = function(knex) {
return knex.schema.createTable('personal_todos', (table)=>{
table.increments('id')
table.integer('user_id').references('id').on('users').OnDelete('CASCADE');
table.boolean('active').notNullable();
table.string('start_time')
table.string('end_time')
table.string('header')
table.string('body')
table.integer('container_index').notNullable()
table.integer('container_item_index').notNullable()
table.timestamps(true,true);
table.boolean('private')
})
};
exports.down = function(knex) {
return knex.schema.dropTableIfExists('personal_todos')
};
还有我的users.jstable
exports.up = function(knex) {
return knex.schema.createTable('users', (table)=>{
table.increments('id');
table.string('first-name');
table.string('last-name');
table.string('username');
table.string('email');
table.string('password');
table.integer('age');
table.string('bio');
table.string('gender');
table.string('personalsecret1');
table.string('personalsecret2');
table.string('personalsecret3');
table.string('colorScheme');
table.binary('img');
table.timestamps(true,true);
table.boolean('payed');
table.boolean('active');
table.boolean('friends_can_see_private');
})
};
exports.down = function(knex) {
return knex.schema.dropTableIfExists('users')
};
我最终通过删除 onDelete() 并将其添加回 运行ning knex migrate:latest 来修复它。我添加了更多代码,然后它就可以工作了。
代码如下,希望对你有帮助,步骤如下
- 删除 onDelete() 运行 migrate:latest
- 添加无符号()。 onDelete('CASCADE') 我也添加了 onUpdate('CASCADE')
然后 运行 膝盖 migrate:latest
我知道我有 postgres 工作,我在 knexfile.js 中有用户名和密码以及数据库名称。 psql 也是 运行ning。我遇到的问题 我在尝试使用我的 table 中的一个 运行 此命令时遇到问题。我尝试了很多不同的步骤,比如添加 table 而不是 on (我读到它是一个别名。我尝试了 foreign() 而不是 integer() 但没有任何进展。请帮忙或者指出一个缺陷据我所知。谢谢
knex migrate:latest
我收到这个错误
Using environment: development
migration failed with error: table.string(...).references(...).on(...).OnDelete is not a function
migration file "20200525002912_personal_todos.js" failed
TypeError: table.integer(...).references(...).on(...).OnDelete is not a function
at TableBuilder._fn (/home/misterjoe/personal_projects/group-note-todo-api/db/migrations/20200525002912_personal_todos.js:5:59)
这是我的 personal_todos.js 文件迁移
exports.up = function(knex) {
return knex.schema.createTable('personal_todos', (table)=>{
table.increments('id')
table.integer('user_id').references('id').on('users').OnDelete('CASCADE');
table.boolean('active').notNullable();
table.string('start_time')
table.string('end_time')
table.string('header')
table.string('body')
table.integer('container_index').notNullable()
table.integer('container_item_index').notNullable()
table.timestamps(true,true);
table.boolean('private')
})
};
exports.down = function(knex) {
return knex.schema.dropTableIfExists('personal_todos')
};
还有我的users.jstable
exports.up = function(knex) {
return knex.schema.createTable('users', (table)=>{
table.increments('id');
table.string('first-name');
table.string('last-name');
table.string('username');
table.string('email');
table.string('password');
table.integer('age');
table.string('bio');
table.string('gender');
table.string('personalsecret1');
table.string('personalsecret2');
table.string('personalsecret3');
table.string('colorScheme');
table.binary('img');
table.timestamps(true,true);
table.boolean('payed');
table.boolean('active');
table.boolean('friends_can_see_private');
})
};
exports.down = function(knex) {
return knex.schema.dropTableIfExists('users')
};
我最终通过删除 onDelete() 并将其添加回 运行ning knex migrate:latest 来修复它。我添加了更多代码,然后它就可以工作了。
代码如下,希望对你有帮助,步骤如下
- 删除 onDelete() 运行 migrate:latest
- 添加无符号()。 onDelete('CASCADE') 我也添加了 onUpdate('CASCADE')
然后 运行 膝盖 migrate:latest