簡體   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