MySQL:“where子句中的列'column_name'是不明确的”

时间:2008-12-03 13:09:34

标签: mysql mysql-error-1052

我加入2桌

例如

table_A
+---------+-----------+-----------+
| user_id | ticket_id | user_name |
+---------+-----------+-----------+

table_B
+-----------+-------------+
| ticket_id | ticket_name |
+-----------+-------------+

如果我运行以下查询:

SELECT
  table_A.user_id
, table_A.user_name
, table_B.ticket_name
FROM table_A
LEFT JOIN table_B ON table_B.ticket_id = table_A.ticket_id
WHERE ticket_id = '1';

在实时服务器上,我们收到错误:“Column 'ticket_id' in where clause is ambiguous
在测试服务器上接受查询。

我知道如何解决错误,这不是问题。

如果我们的测试服务器不接受此查询并且(就像生产服务器那样)抛出错误,我会很高兴。

是否有人知道是否存在某种设置会导致测试服务器像实时服务器一样抛出错误?

P.S。
测试服务器上的MySQL版本5.0.32-Debian_7etch5-log
Live服务器上的MySQL版本5.0.41-community-log

3 个答案:

答案 0 :(得分:5)

MS SQLServer存在类似的问题,其中版本2000接受一些模棱两可的查询,而2005会引发错误。基本上,新版本似乎更严格。

作为一般规则,您应该在测试服务器和生产服务器上使用相同的数据库版本,以避免这种类型的行为,其中一段代码在测试计算机上运行并且在生产时失败。

答案 1 :(得分:2)

您的两台服务器中有哪些SQL mode?我可以想象一个人会比另一个人更严格。

答案 2 :(得分:0)

我认为Tomalak是对的 - 在MySQL管理设置中有一个严格的模式可以解决您在此问题上的问题。

我记得你在数据库创建过程中选择它,但你可以从Admin GUI调整它。

目前MySQL存在一些重大错误,如果可以的话,您可能需要考虑转移到SQL Server Express ...

太阳陷入财务困境,我不确定MySQL会不会结束。