语法错误或访问冲突:1071指定密钥太长;最大密钥长度为767字节

时间:2018-04-05 12:27:26

标签: php mariadb

我的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;

1 个答案:

答案 0 :(得分:0)

如果您坚持在512上保留用户名的长度,以下对重复主题的评论会提供2种可能性:https://stackoverflow.com/a/41298282/5987517

我认为我们的最佳解决方案是将您的编码从UTF-8更改为latin1_general_ci