我有一个包含 3 列的表:
id(int 11) | user_id(int 4) | title(varchar 512)
____________|________________|___________________
1 | 3 | Thing X
2 | 3 | Something Else
3 | 5 | Thing X
Run Code Online (Sandbox Code Playgroud)
我需要在user_id
和之间进行独特的组合title
。为此,我正在使用这个简单的查询:
ALTER TABLE posts ADD UNIQUE `unique_post`(`user_id`, `title`)
Run Code Online (Sandbox Code Playgroud)
该title
列的字符集是utf8mb4_unicode_ci
. 数据库是使用字符集创建的utf8mb4
:
CREATE DATABASE learning_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
表类型是InnoDB
.
我试图设置一些全局变量:
SET GLOBAL innodb_file_format=Barracuda;
SET GLOBAL innodb_file_per_table=on;
SET GLOBAL innodb_large_prefix=on;
Run Code Online (Sandbox Code Playgroud)
但我遇到了同样的错误1071
:
Specified key was too long; max …
Run Code Online (Sandbox Code Playgroud)