这是我的第一个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')
答案 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);