knex迁移创建外键

时间:2015-02-05 17:58:21

标签: knex.js

我尝试了链接中的代码来创建FK:

how to do knex.js migration

我在网上收到了错误:

table.bigInteger('AddressId').unsigned().index().inTable('Address').references('id');

错误:

TypeError: Object # has no method 'inTable' at 
 TableBuilder_MySQL._fn (/Users/lwang/knex/migrations/20150204161920_lei_maigration.js:15:56) at
 TableBuilder_MySQL.TableBuilder.toSQL (/Users/lwang/knex/node_modules/knex/lib/schema/tablebuilder.js:61:12) at 
 SchemaCompiler_MySQL.createTable (/Users/lwang/knex/node_modules/knex/lib/schema/compiler.js:14:53) at 
 SchemaCompiler_MySQL.SchemaCompiler.toSQL (/Users/lwang/knex/node_modules/knex/lib/schema/compiler.js:35:24) at 
 SchemaBuilder_MySQL.SchemaBuilder.toSQL (/Users/lwang/knex/node_modules/knex/lib/schema/builder.js:41:35) at 
 Runner_MySQL. (/Users/lwang/knex/node_modul...

1 个答案:

答案 0 :(得分:19)

这可能会有点晚,但错误是因为

table.bigInteger('AddressId').unsigned().index().inTable('Address').references('id');

应该写

table.bigInteger('AddressId').unsigned().index().references('id').inTable('Address')

inTable函数仅在调用引用后才存在,如文档http://knexjs.org/#Schema-inTable

中所述
  

设置"表"调用后外键列所在的位置   column.references。