您好我正在尝试在我的列上设置字符集,因为我们在不同的表上有一个包含不同字符集的数据库。这是我失败的代码。
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 :(得分:0)
CHARACTER SET
应该应用于列定义,而不是FOREIGN KEY
约束。
CHARACTER SET
不适用于INT
数据类型,仅适用于CHAR
和TEXT
以及ENUM
的变体。
(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
。
当char / text列上的JOINing
两个表时,请确保声明相同 CHARACTER SET
和 COLLATION
(明示或暗示)。否则,性能可能会受到影响。