重复的条目错误消息格式

时间:2010-09-03 23:42:30

标签: php mysql

我遇到mysql重复错误消息的问题。在我的一台机器上,错误如下:

  

为密钥2重复输入'foobar'

在另一台机器上看起来像:

  

名称

的重复条目'foobar'
  • 一台机器打印密钥索引,另一台机器打印密钥名称。
  • 一台机器是Ubuntu 10.04桌面;另一个是Debian Lenny Server
  • MySQL版本:

Ubuntu的: 服务器版本:5.1.41-3ubuntu12.6 协议版本:10

的Debian: 服务器版本:5.0.51a-24 + lenny1-log 协议版本:10

这真的是版本问题吗? 有什么建议我可以控制这个吗?

3 个答案:

答案 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。