2017-02-15 125 views
0
USE raimohuybrechts; 
CREATE TABLE UnitBase 
(
    Id INT NOT NULL UNIQUE AUTO_INCREMENT PRIMARY KEY, 
    Name VARCHAR(255) NOT NULL UNIQUE CHARACTER SET utf8, 
    Description VARCHAR(1024) CHARACTER SET utf8, 
    ShippingCostMultiplier FLOAT, 
    Code VARCHAR(2) NOT NULL UNIQUE 
); 

错误是:字符集UTF8给语法错误

线4:#1064 - 你在你的SQL语法错误;检查对应于你的MySQL服务器版本的权利 语法使用近'CHARACTER SET UTF8,说明VARCHAR(1024) CHARACTER SET UTF8,船舶在行的 手动4

真的不能图出了什么问题,因为我在第3行使用了完全相同的语法,并且在那里没有出现错误。

+0

https://dev.mysql.com/doc/refman/5.7/en/charset-table.html字符集末 – Mihai

回答

0

您可能要设置的字符集在表级别。

但是如果你需要在列级进行设置,列级CHARACTER SET规范是data_type的一部分,所以它需要拿出其他改性剂如NOT NULLUNIQUE

此之前,应工作:

CREATE TABLE UnitBase 
(
    Id INT NOT NULL UNIQUE AUTO_INCREMENT PRIMARY KEY, 
    Name VARCHAR(255) CHARACTER SET utf8 NOT NULL UNIQUE, 
    Description VARCHAR(1024) CHARACTER SET utf8, 
    ShippingCostMultiplier FLOAT, 
    Code VARCHAR(2) NOT NULL UNIQUE 
); 
+0

非常感谢您的澄清,艾克!它正在工作。 – Raimo

-1

您不能将字符设置为UTF8字段/列。

正确的字符串是:

CREATE TABLE UnitBase 
(
    Id INT NOT NULL UNIQUE AUTO_INCREMENT PRIMARY KEY, 
    Name VARCHAR(255) NOT NULL, 
    Description VARCHAR(1024), 
    ShippingCostMultiplier FLOAT, 
    Code VARCHAR(2) NOT NULL UNIQUE 
) ENGINE=InnoDB CHARACTER SET=utf8; 
+0

我敢肯定,你可以,除非该文档是在说谎: [https://dev.mysql.com/doc/refman/5.7/en/charset-column.html](https://dev.mysql.com/doc/refman/5.7/en/charset-column.html) – Raimo

+0

是的,您可以在列级设置字符集。 –