回覆列表
  • 1 # lanfengz1

    資料型別不一致。

    你的主表, id 的資料型別是 int unsigned

    而你的子表, hoyyb_id 資料型別是 int

    因為:

    INT[(M)] [UNSIGNED] [ZEROFILL]

    普通大小的整數。帶符號的範圍是-2147483648到2147483647。無符號的範圍是0到4294967295。

    2種解決辦法

    1、 主表資料型別, 修改為 int

    2、子表資料型別, 修改為 int unsigned

    下面是一個模擬的例子:

    -- 主表, id 是 INT unsigned

    mysql> CREATE TABLE test_main2 (

    -> id INT unsigned NOT NULL,

    -> value VARCHAR(10),

    -> PRIMARY KEY(id)

    -> );

    Query OK, 0 rows affected (0.01 sec)

    -- 子表, 資料型別 int 的時候。

    mysql> CREATE TABLE test_sub2 (

    -> id INT NOT NULL,

    -> main_id INT ,

    -> value VARCHAR(10),

    -> PRIMARY KEY(id),

    -> CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main2(id)

    -> );

    ERROR 1005 (HY000): Can"t create table "test.test_sub2" (errno: 150)

    -- 子表, 資料型別 int unsigned 的時候

    mysql> CREATE TABLE test_sub2 (

    -> id INT NOT NULL,

    -> main_id INT unsigned,

    -> value VARCHAR(10),

    -> PRIMARY KEY(id),

    -> CONSTRAINT main_id_cons FOREIGN KEY (main_id) REFERENCES test_main2(id)

    -> );

    Query OK, 0 rows affected (0.02 sec)

  • 中秋節和大豐收的關聯?
  • 丹頂鶴的故事,歌詞?