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

MySQL:“where子句中的'Column_name'列不明确”,mysql,mysql-error-1052,Mysql,Mysql Error 1052,我加入两张桌子 比如说 table_A +---------+-----------+-----------+ | user_id | ticket_id | user_name | +---------+-----------+-----------+ table_B +-----------+-------------+ | ticket_id | ticket_name | +-----------+-------------+ 如果我运行以下查询: SELECT table_A.u

我加入两张桌子

比如说

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'; 在实时服务器上,我们得到错误:where子句中的“ticket\u id”列不明确 在测试服务器上,接受查询

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

但是,如果我们的测试服务器不接受这个查询,就像生产服务器抛出错误一样,我会非常高兴

有人知道是否有某种设置会使测试服务器像实时服务器一样抛出错误吗

附言。 测试服务器上的MySQL版本:5.0.32-Debian_7etch5-log
Live server上的MySQL版本:5.0.41-community-log

MS SQLServer也存在类似问题,其中2000版接受一些模糊的查询,2005版将抛出错误。基本上,新版本似乎更严格


作为一般规则,您应该在测试服务器和生产服务器上使用相同的DB版本,以避免出现这样的行为,即一段代码在测试机器上工作,而在生产机器上出现故障。

您的两台服务器是什么?我可以想象其中一个设置比另一个更严格。

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

我记得您在创建数据库时选择了它,但您可以从管理GUI进行调整

现在MySQL中有一些明显的bug,如果你能……你可能想考虑移动到SQLServer Express…
Sun陷入财务困境,我不确定MySQL将如何结束。

是的,我知道,我应该保持不变:检查Tomalak的答案,也许你可以在这两个版本上设置等效的SQL模式生产服务器最有可能运行-SQL Mode=ANSI,而测试服务器对我来说并不坏,两台服务器都在相同的SQL模式下运行。