繁体   English   中英

关于mysql表创建的令人困惑的错误

[英]Confusing error regarding mysql table creation

这是我用来创建表的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,不是吗?

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

问题来自VARCHAR(255)列上的“ UNIQUE”约束。

在这里试试这个:

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)
);

我认为这会工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM