2016-03-23 15 views
1

Yeni bir veritabanı oluşturdum ve bazı yabancı anahtarları ekledim, çünkü daha önce veritabanımda bulamadım ve tüm web sayfam Birçok sorun var .. bu yüzden ihtiyacım olan tüm yabancı anahtarlarla yeni bir tane oluşturmaya karar verdim. SQLSTATE [23000]: Bütünlük kısıtlaması ihlali: 1452 Bir alt satırı eklenemiyor veya güncelleştirilemiyor: [LARAVEL]

Şimdi benim web sayfasında yeni bir kullanıcı oluşturulur ve çalışır .. Ama bu kullanıcıyla bir konu başlığı oluşturmak için çalışıyorum, ben bu hata mesajını alıyorum:


sqlstate [23000 ]: Bütünlük kısıtlama ihlali: 1452 ekleyebilir veya bir alt satır güncelleyemiyorsunuz: threads (themen_id, thread, content içine yerleştirin: bir yabancı anahtar kısıtlaması başarısız (SQL (. Laravelthreads, KISITLAMA threads_ibfk_2 YABANCI kEY (themen_id) themes (id) REFERANSLAR) , user_id,.210, created_at) değerleri ({id}, boynuzlu, gökkuşağı, 1, 2016/03/23 14:11:23, 2016-03-23 ​​14:11:23))


ve bu hatanın altında yine neredeyse aynı hata:


sqlstate [23000]: Bütünlük kısıtlama ihlali: 1452 ekleyebilir veya bir alt satır güncelleyemiyorsunuz: bir yabancı anahtar kısıtlaması (Laravel başarısız olur. threads, KISITLAMA threads_ibfk_2 YABANCI KEY (themen_id) themes (id))


peki, bu anlama gelmiyor tek fikir, yok REFERANSLAR. Umarım biriniz bana yardım edebilir. Masayı nasıl yarattığını

Thats: Ben, laravel ile çalışıyorum

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 
); 

tabii ki .env dosyasında veritabanı adını değiştirdik. Şey, şu an gerçekten şimdi ne yapmam.

Herhangi bir yardım?

Teşekkürler!

+0

'themen_id' tamsayıyı bekler, ancak hata bir dize '{id}' gönderdiğini gösterir. – frz3993

+1

Hata, "temalar" içinde olmayan bir "themen_id" değerini kullanarak bir "thread" içine kayıt yerleştirmeye çalıştığınızı gösterir. Yabancı anahtar kısıtlaması, bunu yapabilmenizi engellemek için özel olarak bulunmaktadır. – David

+0

Kimlik = {id} ile hangi "geçtiğini" içeren bir "Tema" yoktur, yabancı anahtarın başvurması gereken budur. –

cevap

0

Sadece laravel değil, tümlükle ilgili sorunlar, ilgili tabloda EXES kullanmıyor olduğunuz yabancı kimliktir. Bu yüzden, belirli bir tabloya yabancı bir anahtar güncelleştirirseniz/eklerseniz, önce var olduğundan emin olun.

İlgili konular