有关mysql表创建的混淆错误

时间:2016-05-10 06:05:49

标签: mysql

这是我用来创建表的SQL行:

CREATE TABLE users ( 
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(255), 
    surname VARCHAR(255), 
    email VARCHAR(255) UNIQUE, 
    username VARCHAR(255) UNIQUE, 
    passwordHash CHAR(60), 
    admin BIT 
)

应该是非常通用的,但是,我收到错误"指定密钥太长;最大密钥长度为767字节"

这让我想知道,什么关键太长了?最长的据说是255B,没有?

2 个答案:

答案 0 :(得分:0)

这取决于您的服务器默认编码。例如,在UTF-8中,每个字符使用三个字节。

问题来自' UNIQUE'对VARCHAR(255)列的约束。

答案 1 :(得分:-1)

在这里尝试一下: -

CREATE TABLE users ( 
id INT NOT NULL AUTO_INCREMENT, 
firstname VARCHAR(255), 
surname VARCHAR(255), 
email VARCHAR(255) UNIQUE, 
username VARCHAR(255) UNIQUE, 
passwordHash CHAR(60), 
admin BIT,
PRIMARY KEY (id),
CONSTRAINT user_info UNIQUE(email,username)
);

我认为这会有用