簡體   English   中英

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

[英]MySQL: “Column 'column_name' in where clause is ambiguous”

我加入了兩張桌子

例如

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
在測試服務器上接受查詢。

我知道如何解決錯誤,這不是問題。

但是,如果我們的測試服務器不接受此查詢並且(就像生產服務器那樣)拋出錯誤,我會很高興。

有沒有人知道是否存在某種設置會使測試服務器像實時服務器一樣拋出錯誤?

PS
測試服務器上的MySQL版本: 5.0.32-Debian_7etch5-log
Live服務器上的MySQL版本: 5.0.41-community-log

MS SQLServer存在類似的問題,其中版本2000接受一些模糊的查詢,而2005會引發錯誤。 基本上,較新的版本似乎更嚴格。

作為一般規則,您應該在測試服務器和生產服務器上使用相同的數據庫版本,以避免此類行為,其中一段代碼在測試計算機上運行並且在生產時失敗。

你的兩個服務器是什么SQL模式 我可以想象一個人會比另一個人更嚴格。

我認為Tomalak是對的 - 在MySQL管理設置中有一個嚴格的模式可以解決你在這個問題上的問題。

我記得你在數據庫創建過程中選擇它,但你可以從Admin GUI中調整它。

MySQL目前存在一些重大缺陷,如果可以的話,您可能需要考慮轉移到SQL Server Express ...

太陽陷入財務困境,我不確定MySQL會不會結束。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM