我遇到mysql重复错误消息的问题。在我的一台机器上,错误如下:
为密钥2重复输入'foobar'
在另一台机器上看起来像:
名称
的重复条目'foobar'
Ubuntu的: 服务器版本:5.1.41-3ubuntu12.6 协议版本:10
的Debian: 服务器版本:5.0.51a-24 + lenny1-log 协议版本:10
这真的是版本问题吗? 有什么建议我可以控制这个吗?
答案 0 :(得分:2)
我猜你正在尝试阅读代码中的错误消息并采取适当的措施,并且不同的消息在尝试决定采取什么操作时会引起头疼。如果是这样,我建议您使用mysql错误代码而不是错误消息。消息文本可能会随着不同的软件版本和语言翻译而改变,但代码应始终保持不变。在php中,您可以使用以下命令检查代码:
mysql_errno($dbh);
我认为与该邮件对应的错误代码是1062。
答案 1 :(得分:1)
在深入了解mysql服务器源代码后,我可以说这是一个版本问题。
版本5.0.41:error_dump方法类似于:
dump_error(..,..,key.nr +1);
版本5.1.51:error_dump方法类似于:
dump_error(..,..,key.name);
所以没有可靠的方法来检测哪个密钥是使用mysql的双重调整?
答案 2 :(得分:1)
这是一个正则表达式,用于检测MySQL 5.0和5.1中代码中的特定索引:
/Duplicate entry '.*?' for key ('index_films_on_imdb_id'|2)/
这里的索引号肯定很脆弱,但在我的情况下,DB模式非常可靠地生成,我不想沿着解析CREATE TABLE语句的路线走下去,这会让它自己遇到困难。 / p>
最好的办法是尽可能将所有内容升级到5.1。