我加入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
答案 0 :(得分:5)
MS SQLServer存在类似的问题,其中版本2000接受一些模棱两可的查询,而2005会引发错误。基本上,新版本似乎更严格。
作为一般规则,您应该在测试服务器和生产服务器上使用相同的数据库版本,以避免这种类型的行为,其中一段代码在测试计算机上运行并且在生产时失败。
答案 1 :(得分:2)
您的两台服务器中有哪些SQL mode?我可以想象一个人会比另一个人更严格。
答案 2 :(得分:0)
我认为Tomalak是对的 - 在MySQL管理设置中有一个严格的模式可以解决您在此问题上的问题。
我记得你在数据库创建过程中选择它,但你可以从Admin GUI调整它。
目前MySQL存在一些重大错误,如果可以的话,您可能需要考虑转移到SQL Server Express ...
太阳陷入财务困境,我不确定MySQL会不会结束。