2017-08-28 66 views
0

您好,我正嘗試在我的列上設置字符集,因爲我們有一個數據庫在不同的表上有不同的字符集。這是我的代碼失敗。在mysql列上設置字符集

CREATE TABLE `ax_np_rain_accounts`( 
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, 
`service_id` INT(11) NOT NULL, 
`type_id` INT(2) UNSIGNED NOT NULL, 
`date_created` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
`is_processed` TINYINT(1), 
PRIMARY KEY (`id`), 
INDEX (`service_id`), 
INDEX (`date_created`), 
FOREIGN KEY (`service_id`) REFERENCES `ax_services`(`ServiceId`) CHARACTER 
SET latin1 COLLATE latin1_swedish_ci, 
FOREIGN KEY (`type_id`) REFERENCES `ax_np_transaction_types`(`id`) CHARACTER 
SET utf8 COLLATE utf8_general_ci 
); 

回答

0

CHARACTER SET應在列定義,而不是約束FOREIGN KEY被施加。

CHARACTER SET並不適用於INT數據類型,只變種CHARTEXTENUM

(2)INT(2)沒有任何意義;也許你應該使用TINYINT UNSIGNED

一個可以有一個默認CHARACTER SET。此設置適用於您未明確設置字符集的任何字符/文本列。

CREATE TABLE x (
    a VARCHAR(9) CHARACTER SET utf8, 
    b VARCHAR(9) CHARACTER SET latin1, 
    c VARCHAR(9) 
) DEFAULT CHARACTER SET big5; 

c將隱含big5; a將明確地爲utf8; b將是latin1

當一個字符/文本列JOINing兩個表,一定有相同CHARACTER SETCOLLATION聲明(顯式或隱式)。否則,績效可能會受到影響。

+0

我已經被證明過,不知道我在想什麼。感謝你的回答。 – Jed