【问题标题】:SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: [ LARAVEL ]SQLSTATE [23000]:违反完整性约束:1452 无法添加或更新子行:[LARAVEL]
【发布时间】:2016-07-10 21:30:43
【问题描述】:

我创建了一个新数据库并添加了一些外键,因为在此之前我的数据库中没有这个,而且我的整个网页都出现了很多问题。这就是为什么我决定创建一个新的数据库,其中包含我所有的外键需要。

现在我在我的网页上创建了一个新用户并且它可以工作。但是如果我尝试与该用户创建一个线程,我会收到以下错误消息:


SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(Laravel.threads,CONSTRAINT threads_ibfk_2 FOREIGN KEY(themen_id)参考themes (id)) (SQL: 插入threads (themen_id, thread, content, user_id, updated_at, created_at) 值 ({id}, unicorn, rainbows, 1 , 2016-03-23 14:11:23, 2016-03-23 14:11:23))


在此错误之下,再次出现几乎相同的错误:


SQLSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败(Laravel.threads,CONSTRAINT threads_ibfk_2 FOREIGN KEY(themen_id)参考themes (id))


嗯,我不知道这是什么意思。我希望你们中的某个人可以在那里帮助我。

这就是我创建表格的方式:

CREATE TABLE threads 
(
    id int AUTO_INCREMENT PRIMARY KEY,
    user_id int NOT NULL,
    themen_id int NOT NULL,
    thread varchar (120),
    content varchar (1200),
    created_at timestamp,
    updated_at timestamp,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (themen_id) REFERENCES themes(id)
);

CREATE TABLE comments 
(
    id int AUTO_INCREMENT PRIMARY KEY,
    thread_id int NOT NULL,
    user_id int NOT NULL,
    comment text,
    created_at timestamp,
    updated_at timestamp,
    FOREIGN KEY (user_id) REFERENCES users(id),
    FOREIGN KEY (thread_id) REFERENCES threads(id)
);

CREATE TABLE themes
(
    id int AUTO_INCREMENT PRIMARY KEY,
    thema text,
    created_at timestamp,
    updated_at timestamp    
);

CREATE TABLE users
(
    id int(10) PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    email VARCHAR(255),
    password VARCHAR(60),
    remember_token VARCHAR(100),
    created_at timestamp,
    updated_at timestamp
);

我正在使用 Laravel,当然我已经更改了 .env 文件中的数据库名称。好吧,我现在真的不知道该做什么。

有什么帮助吗?

谢谢!

【问题讨论】:

  • themen_id 需要整数,但错误表明您发送了字符串 {id}
  • 该错误表明您正在尝试使用themen_id 值在themes 中不存在的threads 中插入一条记录。外键约束的存在是为了防止你这样做。
  • 没有 id = {id} 的“主题”,这是您传递的内容,这就是外键应该引用的内容。

标签: php sql database laravel-5 foreign-key-relationship


【解决方案1】:

不仅来自 laravel 的完整性问题主要是因为您在相关表中使用的外部 ID DOES NOT EXIST。因此,如果您将外键更新/添加到某个表,请确保它首先存在。

【讨论】:

    猜你喜欢
    • 2021-02-14
    • 2016-05-31
    • 2020-01-23
    • 2015-12-07
    • 2015-09-02
    • 2021-07-23
    • 2020-09-29
    • 2018-04-17
    相关资源
    最近更新 更多