gpt4 book ai didi

简单转储导入设置中的 mysql 错误 1071(指定的 key 太长;最大 key 长度为 1000 字节)

转载 作者:行者123 更新时间:2023-11-29 03:51:23 34 4
gpt4 key购买 nike

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

$ 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 上导入

$ 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 选项运行它,它会变得更奇怪:

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

这是怎么回事?

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

我更喜欢不必调试实际错误,这必须可以在高层次上解决。

更新:解决方案因为弗雷德里克给我指出了正确的方向。基本上我的转储试图用 INNODB 引擎设置数据库,但是服务器 2 上的 mysql 在/etc/my.cnf 中有

[mysqld]
skip-innodb

只需删除此选项并重新启动 mysqld,我的导入就可以顺利运行了。我很伤心,像引擎不可用这样简单的事情不值得警告或错误,而不是静默回退到 myISAM 引起的 key 长度问题。唔。那么是时候切换到 posgresql 了吗?蒙戈? :)

最佳答案

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

我上次看到这样的东西是因为配置问题:mysql 无法在启动时设置 innodb,所以它禁用了 innodb。检查你的 mysql 错误日志,它应该标记启动期间遇到的任何问题。例如,如果 innodb_log_file_size 设置与日志文件(ib_logfile0ib_logfile1、.. .)

关于简单转储导入设置中的 mysql 错误 1071(指定的 key 太长;最大 key 长度为 1000 字节),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873870/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com