2016-05-10 4 views
0

Это SQL линии я использую для создания таблицы:Смешение ошибка относительно создания MySQL таблицы

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

отлично работает для меня: http://sqlfiddle.com/#!9/b10f1a - у вас есть триггеры? – Strawberry

ответ

0

Это зависит от вашего стандартного кодирования сервера. Например, в UTF-8 для каждого символа используется три байта.

Проблема возникает из-за ограничения UNIQUE на столбцах VARCHAR (255).

+0

Это utf-8, но учитывая, что 255 * 3 = 765, должно быть, все еще не все в порядке? – user81993

+0

Я только что проверил кучу и 191 - это максимальное значение, которое по-прежнему работает, как в 191 * 4 = 764, странно! – user81993

+0

Потому что вы используете 'utf8mb4'. –

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

я думаю, что это будет работать

Смежные вопросы