Tablolarımda yabancı anahtarların kurulumunu yaptığımı, ancak DDL'mdeki doğru sözdizimine rağmen ve hatta bir kısıtlama eklemeye çalışırken bile, hiçbir şey olmuyor. Ben herhangi bir hata alamadım ve ben '10 satır (lar) etkilenen Kayıtlar belirten bir mesaj alıyorum: 10 çoğaltmaları: 0 Uyarılar:MySQL yabancı anahtarları oluşturulmuyor
CREATE TABLE USERS_COURSES (
USERS_COURSES_ID INT NOT NULL AUTO_INCREMENT,
USER_ID INT NOT NULL,
COURSE_ID INT NOT NULL,
ROLE INT NOT NULL,
CONSTRAINT PK_USERS_COURSES PRIMARY KEY (USERS_COURSES_ID),
CONSTRAINT U_USERS_COURSES UNIQUE (USER_ID, COURSE_ID),
CONSTRAINT FK_USERS_COURSES_USERS FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID),
CONSTRAINT FK_USERS_COURSES_COURSES FOREIGN KEY (COURSE_ID) REFERENCES COURSES (COURSE_ID)
);
: 0'
İştebenim tablo için tanımıdır Ben MySQL Workbench tablonun bakmak ve IntelliJ IDEA yoluyla, tüm gördüğüm adlı tek endeksidir FK_USERS_COURSES_COURSES (COURSE_ID)
istediğim gibi aşağıdaki komutları olarak defalarca çalıştırabilir ve apparnetly hiçbir şey olmaz:
ALTER TABLE USERS_COURSES ADD CONSTRAINT FK_USERS_COURSES_USERS FOREIGN KEY (USER_ID) REFERENCES USERS (USER_ID);
ALTER TABLE USERS_COURSES ADD CONSTRAINT FK_USERS_COURSES_COURSES FOREIGN KEY (COURSE_ID) REFERENCES COURSES (COURSE_ID);
Bu
nedeni ne olabilir: Ben IntelliJ benim Veritabanı sekmesinde gördüklerinizi İşte
mı? Silmeyi önlemek için yabancı tuşlara ihtiyacım var, ve şimdi bu gerçekleşmiyor.
https://dev.mysql.com/doc/refman/5.7/en/using-innodb-tables .html Innodb motorunu kullandığınızdan emin olun (CREATE TABLE ... ENGINE = InnoDB). Aksi halde, yabancı anahtarlar sözdizimsel olarak kabul edilir, ancak uygulanmaz. – Mike
@Mike Cevap buydu. Cevap vermek istiyorsan kabul edeceğim. – agent154
Teşekkürler. Bitti. Sadece kontrol ettiğin zemini korumadığından emin olmak istedim (Ayrıca, eğer olmasaydı, hiçbir şeyim olmazdı!) – Mike