0
我在使外鍵與我的一些主鍵匹配時遇到了一些麻煩。我不斷收到錯誤"Error: Cannot add foreign key constraint"
。我不知道自己做錯了什麼,但可能是因爲我一直盯着它太久。有什麼建議麼?使用Java的外鍵引用
//customer table
statement.execute("CREATE TABLE IF NOT EXISTS mydb.Customers ("
+ " FirstName VARCHAR(21) NOT NULL, "
+ " StreetAddress VARCHAR(45) NULL, "
+ " TelephoneNumber VARCHAR(45) NULL, "
+ " SetOfFrequentFlyerMemberships VARCHAR(45) NULL, "
+ " PreferredPaymentMethod VARCHAR(45) NULL, "
+ " Preferences VARCHAR(45) NULL, "
+ " City VARCHAR(45) NULL, "
+ " State INT NULL, "
+ " LastName VARCHAR(45) NULL, "
+ " CustomerID VARCHAR(45) NOT NULL, "
+ " Customerscol VARCHAR(45) NOT NULL, "
+ " PRIMARY KEY (CustomerID, Preferences))");
//reservation table
statement.execute("CREATE TABLE IF NOT EXISTS mydb.Reservations ("
+ " CustomerID INT NOT NULL, "
+ " TravelAgent VARCHAR(45) NOT NULL, "
+ " FlightID INT NULL, "
+ " PaymentType VARCHAR(45) NULL, "
+ " StatusOfReservation VARCHAR(45) NULL, "
+ " ReservationID VARCHAR(45) NOT NULL, "
+ " PaymentID INT NOT NULL, "
+ " Preferences VARCHAR(45) NULL, "
+ " PRIMARY KEY (ReservationID), "
+ " CONSTRAINT fk_Reservations_Customers1 "
+ " FOREIGN KEY (CustomerID) "
+ " REFERENCES mydb.Customers(CustomerID), "
+ " CONSTRAINT fk_Reservations_Payment1 "
+ " FOREIGN KEY (PaymentID) "
+ " REFERENCES mydb.Payment(PaymentID), "
+ " CONSTRAINT fk_Reservations_Flights1 "
+ " FOREIGN KEY (FlightID) "
+ " REFERENCES mydb.Flights(FlightID), "
+ " CONSTRAINT fk_Reservations_Preference1 "
+ " FOREIGN KEY (Preferences) "
+ " REFERENCES mydb.Customers(Preferences))");
//frequent flyer membership
statement.execute("CREATE TABLE IF NOT EXISTS mydb.FrequentFlyerMemberships ("
+ " FrequentFlyerID INT NOT NULL, "
+ " customerID VARCHAR(45) NULL, "
+ " ReservationID VARCHAR(45) NULL, "
+ " PRIMARY KEY (FrequentFlyerID), "
+ " CONSTRAINT fk_FrequentFlyerMemberships_Reservations1 "
+ " FOREIGN KEY (ReservationID) "
+ " REFERENCES mydb.Reservations(ReservationID))");
這不是我所有的代碼,但這些是我似乎遇到問題的唯一塊。
哪裏'mydb.Flights',「mydb.Payment」表 – xrcwrn 2014-12-03 07:49:59
我很** **擔心名爲'Customers'的表,其中'Preferences'是主鍵的一部分。沒有理由成爲_any_鍵的一部分。鑑於您當前的列列表,它應該很可能是_only_'CustomerId'。該列應該是一個普通的'INTEGER'(我在這裏看不到任何45字符字符串的理由)。 – 2014-12-03 08:33:37