我有一个包含 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)