首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单转储-导入设置中出现mysql错误1071 (指定的密钥太长;最大密钥长度为1000字节)

问简单转储-导入设置中出现mysql错误1071 (指定的密钥太长;最大密钥长度为1000字节)
EN

Stack Overflow用户
提问于 2012-06-04 04:52:13
回答 3查看 26.3K关注 0票数 2

转储服务器1上的mysql数据库

代码语言:javascript
复制
$ mysql --version
mysql  Ver 14.14 Distrib 5.1.54, for debian-linux-gnu (x86_64) using readline 6.2
$ mysqldump -u root -p db > db.sql

在服务器2上导入

代码语言:javascript
复制
$ mysql --version
mysql  Ver 14.12 Distrib 5.0.95, for unknown-linux-gnu (x86_64) using readline 5.1
$ mysql -u root -p db < db.sql
ERROR 1071 (42000) at line 807: Specified key was too long; max key length is 1000 bytes

我知道有很多关于这个错误的问题和答案,但它仍然让我感到困惑。

会不会是版本问题?我想不是的。

如果我使用--force选项运行它,它会变得更加复杂:

代码语言:javascript
复制
ERROR 1071 (42000) at line 807: Specified key was too long; max key length is 1000 bytes
ERROR 1146 (42S02) at line 847: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 848: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 849: Table 'db.users' doesn't exist
ERROR 1146 (42S02) at line 850: Table 'db.users' doesn't exist

怎么一回事?

我的意思是,除了解决这个问题之外,我还想了解哪些设置会影响简单的转储-导入操作,以及为什么这些设置不能在我的转储文件中显式显示并设置为导入。

我不喜欢调试实际的错误,这必须是可解决的高水平。

更新:随着Frederic为我指明了正确的方向,解决方案。基本上,我的转储是尝试使用INNODB引擎设置数据库,但是服务器2上的mysql在/etc/my.cnf中

代码语言:javascript
复制
[mysqld]
skip-innodb

只需删除此选项并重新启动mysqld,我的导入就不会发出沙沙声。我很遗憾,像引擎不可用这样简单的事情是不值得警告或错误的,而不是由于默默地退回到myISAM而导致的密钥长度问题。嗯。那么是时候切换到posgresql了吗?mongo?:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-04 05:29:19

听起来在第二台机器上禁用了innodb,所以mysql会默默地退回到myisam,它有不同的限制:每个键1000字节,而不是3500字节。

我最后一次看到这样的情况是因为配置问题: mysql不能在启动时设置innodb,所以它禁用了innodb。检查您的mysql错误日志,它应该标记在启动过程中遇到的任何问题。例如,如果innodb_log_file_size设置与日志文件(ib_logfile0、ib_logfile1等)的大小不匹配,innodb将拒绝初始化。

票数 8
EN

Stack Overflow用户

发布于 2017-06-13 23:46:22

这对我很有效。

代码语言:javascript
复制
mysql -u USERNAME -p

use DATABASENAME;

set global innodb_large_prefix=on;
set global innodb_file_format=Barracuda;
set global innodb_file_per_table=true;

Error: “#1071 – Specified key was too long; max key length is 767 bytes” when import mysql db

票数 7
EN

Stack Overflow用户

发布于 2014-08-06 19:44:37

此外,如果您的系统是64位,并且您正在从yum (存储库默认设置)运行MySQL,则在尝试从其他系统恢复数据库时会看到此错误。我不知道为什么"yum install mysql mysql-devel mysql-server",他们只运行32位。

所以,在这种情况下,请从Percona或Marina安装并使用MySQL (当然是64位版本)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10873870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档