在表上插入或更新违反外键约束PSQL / Knex

时间:2016-12-18 05:17:23

标签: postgresql foreign-keys knex.js

这是我的第一个psql数据库。我正在使用knex。

我有3个表:users,users_posts和users_comments。我想设置它,以便用户可以发布内容并对其他用户帖子发表评论。

当我为users_comments播种时,我收到此错误:

  

在表“user_comments”上插入或更新违反外键约束

如何修改表以使users_comment表接受外部post_id键?或者,我是否有更好的方式来设置帖子和用户的评论?

用户表

table.increments();
table.string('username').notNullable().defaultTo('').unique();
table.string('email').notNullable().unique();
table.specificType('hashed_password', 'char(60)').notNullable();
table.timestamps(true, true);

users_posts表

table.increments();
table.integer('user_id')
 .notNullable()
 .references('id')
 .inTable('users')
 .onDelete('CASCADE')
 .index();
table.string('post_title').notNullable().defaultTo('');
table.string('post_content').notNullable().defaultTo('');
table.timestamps(true, true);

users_comments表

table.increments();
table.integer('user_id')
 .notNullable()
 .references('id')
 .inTable('users')
 .onDelete('CASCADE')
 .index();
table.integer('post_id')
  .notNullable()
  .references('id')
  .inTable('users_posts')
  .onDelete('CASCADE')
  .index();
table.string('comment_content').notNullable().defaultTo('');
table.timestamps(true, true);

users_comments seed:

    id: 1,
    user_id: 1,
    post_id: 1,
    comment_content:"...",
    created_at: new Date('2016-06-29 14:26:16 UTC'),
    updated_at: new Date('2016-06-29 14:26:16 UTC')

1 个答案:

答案 0 :(得分:0)

搞定了。对user_comments进行了这些更改......

table.integer('user_id') 
 .notNullable() 
 .references('id') 
 .inTable('users') 
 .onDelete('CASCADE') 
 .index(); 
table.integer('id') 
 .notNullable() 
 .references('user_posts') 
 .onDelete('CASCADE') 
 .index();    
table.string('comment_content').notNullable().defaultTo('');
table.timestamps(true, true);