私は2つのテーブルの間の関係を作成しようとしていますが、私はオブジェクトをPostgresデータベースに挿入しようとするといくつかの問題が発生するようです。次のエラーが発生し続ける:insert or update on table "tournament" violates foreign key constraint "tournament_league_id_foreign"
これは私のknex構文に関係していると思いますか?列は外部キー制約に違反しています
あなたは.references('id').inTable('league')
ことを指定した列league_id
あなたのために、tournament
テーブルを作成したときにDBに
var data = {
id: id,
name: name,
league_id: leagueId
};
var query = knex('tournament').insert(data).toString();
query += ' on conflict (id) do update set ' + knex.raw('name = ?, updated_at = now()',[name]);
knex.raw(query).catch(function(error) {
log.error(error);
})
Knexテーブル
knex.schema.createTable('league', function(table) {
table.increments('id').primary();
table.string('slug').unique();
table.string('name');
table.timestamp('created_at').notNullable().defaultTo(knex.raw('now()'));
table.timestamp('updated_at').notNullable().defaultTo(knex.raw('now()'));
}),
knex.schema.createTable('tournament', function(table) {
table.string('id').primary();
table.integer('league_id').unsigned().references('id').inTable('league');
table.string('name');
table.boolean('resolved');
table.timestamp('created_at').notNullable().defaultTo(knex.raw('now()'));
table.timestamp('updated_at').notNullable().defaultTo(knex.raw('now()'));
})
「移行する」とはどういう意味ですか? – redneb
混乱して申し訳ありません。移行ではありません!編集した質問 –