语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节 [重复]
Posted
技术标签:
【中文标题】语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节 [重复]【英文标题】:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes [duplicate] 【发布时间】:2018-09-15 06:41:34 【问题描述】:我的 php 项目有一个迁移文件。我收到此错误
语法错误或访问冲突:1071 指定的键太长;最大限度 密钥长度为 767 字节
我明白这个问题是由于 varchar(512) 和 charset - UTF8 造成的,但我该如何解决这个问题?我无法更改我的迁移脚本。 mysql的my.ini中的一些属性可以修改吗?
CREATE TABLE if not exists usermaster (
user_id bigint(20) NOT NULL,
username varchar(512) NOT NULL,
PRIMARY KEY (user_id,username),
KEY fk_um_idx (user_id),
CONSTRAINT fk_um_idx FOREIGN KEY (user_id) REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
【问题讨论】:
你能升级到 MySQL 5.7 忘了说我已经把 MySQL 更新到 10.1.31 否则我必须将表格的字符集从utf8mb4
更改为 utf8
@Sinto 我无法更改脚本
?? MySQL to 10.1.31
我想你的意思是说你使用的是mariaDB
而不是 MySQL
【参考方案1】:
如果您坚持将用户名的长度保持在 512,以下关于重复主题的评论提供了 2 种可能性:https://***.com/a/41298282/5987517
我认为在我们的案例中最好的解决方案是将您的编码从 UTF-8
更改为 latin1_general_ci
【讨论】:
以上是关于语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节
Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节 laravel 5.3
Symfony 3.4.4 + MariaDB 10.0.1 - SQLSTATE [42000]:语法错误或访问冲突:1071 指定的密钥太长;最大密钥长度为 767 字节
Laravel: Mediable migration error 语法错误或访问冲突:1071 Specified key was too long;最大密钥长度为 1000 字节