web-dev-qa-db-ja.com

外部キーを作成するknex移行

リンク内のコードを試してFKを作成しました。

knex.jsの移行方法

オンラインでエラーが発生しました:

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...
9
Lei

これは少し遅れるかもしれませんが、エラーは

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を呼び出した後、外部キー列が配置される「テーブル」を設定します。

20
devconcept