primary key == 主鍵 等價於 唯一 (UNIQUE) 且 非空 (NOT NULL)
因為 Mysql 裡面的自增列, 必須要依賴一個 主鍵 或者 唯一的鍵。
所以你的 SQL 裡面要有一個
PRIMARY KEY ( `id` )
如果不加 PRIMARY KEY ( `id` ) 的話, 結果將像下面這個樣子:
mysql> CREATE TABLE tab (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
這行語句, 設定了3個表的屬性
ENGINE = InnoDB 是設定表的引擎。 innoDB 引擎是比較新的, 支援外來鍵 與 事務處理等特性。
CHARSET = gbk 是字符集
AUTO_INCREMENT =1 是那個 自增的 ID , 起始數值是 1
我檢視結構的時候確實是gbk_chinese_ci 了
這個要調查一下,你的資料,是怎麼插入的。
雖然你的資料庫表的 字元編碼, 是 gbk 了。
但是如果你的 資料,是透過 網頁插入的, 而網頁的編碼是 utf8 之類的話。
那麼最後儲存的資料, 就可能是 ?? 了。
primary key == 主鍵 等價於 唯一 (UNIQUE) 且 非空 (NOT NULL)
因為 Mysql 裡面的自增列, 必須要依賴一個 主鍵 或者 唯一的鍵。
所以你的 SQL 裡面要有一個
PRIMARY KEY ( `id` )
如果不加 PRIMARY KEY ( `id` ) 的話, 結果將像下面這個樣子:
mysql> CREATE TABLE tab (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10)
-> );
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
ENGINE = InnoDB DEFAULT CHARSET = gbk AUTO_INCREMENT =1;
這行語句, 設定了3個表的屬性
ENGINE = InnoDB 是設定表的引擎。 innoDB 引擎是比較新的, 支援外來鍵 與 事務處理等特性。
CHARSET = gbk 是字符集
AUTO_INCREMENT =1 是那個 自增的 ID , 起始數值是 1
我檢視結構的時候確實是gbk_chinese_ci 了
這個要調查一下,你的資料,是怎麼插入的。
雖然你的資料庫表的 字元編碼, 是 gbk 了。
但是如果你的 資料,是透過 網頁插入的, 而網頁的編碼是 utf8 之類的話。
那麼最後儲存的資料, 就可能是 ?? 了。