2016-03-23 104 views
1

我創建了一個新的數據庫並添加了一些外鍵,因爲我之前沒有在我的數據庫和我的整個網頁有很多問題..這就是爲什麼我決定創建一個新的,我需要的所有外鍵。SQLSTATE [23000]:完整性約束違規:1452無法添加或更新子行:[LARAVEL]

現在我創建了我的網頁上一個新的用戶和它的作品。但如果我試圖創建與該用戶線程,我收到此錯誤信息:


SQLSTATE [23000 ]:完整性約束違規:1452不能添加或更新子行,外鍵約束失敗(Laravelthreads,約束threads_ibfk_2外鍵(themen_id)參考文獻themesid))(SQL:插入threadsthemen_idthreadcontentuser_idupdated_atcreated_at)值({ID},獨角獸,彩虹,1,2016年3月23日14點11分23秒,2016年3月23日14點11分23秒))


和低於該錯誤,幾乎再次相同的錯誤:


SQLSTATE [23000]:完整性約束違規:1452不能添加或更新子行,外鍵約束失敗(Laravelthreads,約束threads_ibfk_2外鍵(themen_id)參考文獻themesid))


好,我沒有不是一個單一的想法,這是什麼意思。我希望有人能幫助我。

這就是我如何創建表:

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文件中更改數據庫名。那麼,我現在不是現在該做什麼。

任何幫助?

謝謝!

+0

'themen_id'需要整數,但錯誤表示您發送了一個字符串'{id}'。 – frz3993

+1

錯誤提示您嘗試使用'themes'中不存在的'themen_id'值將記錄插入到'threads'中。外鍵約束的存在是爲了防止你能夠做到這一點。 – David

+0

沒有「主題」id = {id}這就是你傳遞的內容,這就是外鍵應該引用的內容。 –

回答

0

不僅來自laravel的完整性問題主要是因爲您在相關表中使用的外部ID 不存在。因此,如果您更新/添加外鍵到某個表,請確保它首先存在。

相關問題