Ran Asked: 2012-01-24 07:54:10 +0800 CST2012-01-24 07:54:10 +0800 CST 2012-01-24 07:54:10 +0800 CST MySql - ERROR 1071 指定的键太长;还原转储时最大密钥长度为 1000 字节 772 在尝试恢复 MySql Dump 时,我收到以下错误: ERROR 1071 (42000) at line 25: Specified key was too long; max key length is 1000 bytes 有任何想法吗? mysql mysqldump 1 个回答 Voted Best Answer RolandoMySQLDBA 2012-01-24T07:56:39+08:002012-01-24T07:56:39+08:00 您可能需要根据您使用的字符集在某些表中调整一些 VARCHAR 长度。 该确切的错误消息实际上是作为 2004 年 11 月的错误报告发布的,而事实上,它并不是真正的错误。这应该指导您如何调整密钥长度,尤其是您的主键。 如果您知道哪个表导致了Error 1071,则必须执行以下操作: 步骤 01) mysqldump only 数据库模式 mysqldump --routines --triggers --all-databases --no-data > MySQLSchema.sql 步骤 02) mysqldump 仅数据 mysqldump --all-databases --no-create-info > MySQLData.sql 步骤 03) 使用 vi 或其他一些编辑器,编辑表的 PRIMARY KEY 以手动限制 PRIMARY KEY,使键不超过 1000 个字符。 步骤 04) 加载模式 mysql -A < MySQLSchema.sql 步骤 05) 加载数据 mysql -A < MySQLData.sql 如果您无法以其他方式解决此问题,您可能不得不诉诸于此, 更新 2012-01-23 11:43 EDT 由于您提到某个表的存储引擎错误,因此您可以执行以下操作: 看上面的步骤 03。去文件中找到表。在文件中查找ENGINE=MyISAM并将其更改为ENGINE=InnoDB. 然后,先加载模式文件,然后加载数据文件。 更新 2012-01-23 11:52 EDT 您应该将此添加到 /etc/my.cnf [mysqld] default-storage-engine=InnoDB 然后运行service mysql restart。如果此时无法重启 mysql,请在 mysql 客户端运行: mysql> SET GLOBAL default_storage_engine = 'InnoDB'; 但是,mysqldump 仍然会ENGINE=MyISAM在每个CREATE TABLE. 您将必须执行我上面提到的 5 步计划,包括ENGINE=MyISAM将ENGINE=InnoDB. 不要为 mysql 数据库更改它!仅更改属于您的那些表。
您可能需要根据您使用的字符集在某些表中调整一些 VARCHAR 长度。
该确切的错误消息实际上是作为 2004 年 11 月的错误报告发布的,而事实上,它并不是真正的错误。这应该指导您如何调整密钥长度,尤其是您的主键。
如果您知道哪个表导致了
Error 1071
,则必须执行以下操作:步骤 01) mysqldump only 数据库模式
步骤 02) mysqldump 仅数据
步骤 03) 使用 vi 或其他一些编辑器,编辑表的 PRIMARY KEY 以手动限制 PRIMARY KEY,使键不超过 1000 个字符。
步骤 04) 加载模式
步骤 05) 加载数据
如果您无法以其他方式解决此问题,您可能不得不诉诸于此,
更新 2012-01-23 11:43 EDT
由于您提到某个表的存储引擎错误,因此您可以执行以下操作:
看上面的步骤 03。去文件中找到表。在文件中查找
ENGINE=MyISAM
并将其更改为ENGINE=InnoDB
. 然后,先加载模式文件,然后加载数据文件。更新 2012-01-23 11:52 EDT
您应该将此添加到 /etc/my.cnf
然后运行
service mysql restart
。如果此时无法重启 mysql,请在 mysql 客户端运行:但是,mysqldump 仍然会
ENGINE=MyISAM
在每个CREATE TABLE
. 您将必须执行我上面提到的 5 步计划,包括ENGINE=MyISAM
将ENGINE=InnoDB
. 不要为 mysql 数据库更改它!仅更改属于您的那些表。