我使用 google could sql(mysql)作为我的生产数据库。为了在 docker 中复制此数据库进行测试,我使用了 mysql:8 映像。
我注意到我的一个迁移脚本在云数据库上成功了,但在测试期间失败了。以下脚本导致错误:
CREATE TABLE testTable
(
name varchar(1000)
);
CREATE INDEX idx_device_designs_name ON testTable (name);
错误:Specified key was too long; max key length is 3072 bytes [Failed SQL: (1071)...
我了解错误的原因,但由于我们的标准生产数据库没有产生该错误,所以我正在寻找禁用此检查的设置。
编辑1:
SELECT VERSION();
-> 8.0.31-谷歌
SHOW CREATE TABLE tableName
生产
CREATE TABLE `testTable` (
`name` varchar(1000) COLLATE utf8mb3_unicode_ci NOT NULL,
KEY `idx_device_designs_name` (`name`),
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci
docker 容器
CREATE TABLE `testTable` (
`name` varchar(1000) CHARACTER SET utf8mb3 COLLATE utf8mb3_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
生产已经在过去应用了索引(在mysql更新之前,所以是5.7)。
SHOW TABLE STATUS LIKE 'testTable'
(生产中)
testTable,InnoDB,10,Dynamic,2,8192,16384,0,32768,0,3,2024-11-14 08:52:26,,,utf8mb3_unicode_ci,,"",""