这是我用来创建表的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,没有?
答案 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)
);
我认为这会有用