0

次のテーブルを作成しようとしました。

お客様:

CREATE TABLE Customer(customer_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
                      surname VARCHAR(15) NOT NULL,
                      forename VARCHAR(15) NOT NULL,
                      DOB TIMESTAMP NOT NULL,
                      phone_no VARCHAR(20) NOT NULL,
                      email_address VARCHAR(30),
                      postcode VARCHAR(15) NOT NULL, 
                      PRIMARY KEY(customer_id)) ENGINE=INNODB;

後で「予約」テーブルを作成しようとすると、エラーが発生します

「エラー 1005(HY000): テーブル 'Test.Booking' を作成できません (errno:150)」

オンラインでエラーを確認したところ、テーブル間で作成しようとした外部キ​​ー接続に関連していることがわかりました。以下に示します。

予約:

CREATE TABLE Booking (booking_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
                      customer_id INT NOT NULL,
                      staying_from TIMESTAMP,
                      staying_until TIMESTAMP,
                      cost INT,
                      PRIMARY KEY(booking_id),
                      FOREIGN KEY(customer_id) REFERENCES Customer(customer_id)
                      ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE=INNODB;
4

1 に答える 1

2

FOREIGN KEY制約の下で文書化されているように:

外部キーの定義には、次の条件が適用されます。

[ deletia ]

  • InnoDB外部キーと参照キーの対応する列は、型変換なしで比較できるように、内部に同様の内部データ型を持っている必要があります。整数型のサイズと符号は同じでなければなりません。文字列タイプの長さは同じである必要はありません。非バイナリ(文字)文字列列の場合、文字セットと照合は同じである必要があります。

Customerあなたが持っているINT UNSIGNEDのに対し、あなたBookingは持っていますINT

于 2012-12-02T16:59:33.890 に答える