3

2つのテーブルに参加します

例えば

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

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

次のクエリを実行すると、次のようになります。

選択する
  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"
テストサーバーでは、クエリが受け入れられます。

私はエラーを解決する方法を知っています、それは問題ではありません。

ただし、テストサーバーがこのクエリを受け入れず、(本番サーバーと同様に)エラーをスローする場合は、非常に満足しています。

ライブサーバーと同じようにテストサーバーがエラーをスローするような設定があるかどうか誰かが知っていますか?

テストサーバー
上のPSMySQLバージョン:ライブサーバー 上のMySQLバージョン:5.0.32-Debian_7etch5-log
5.0.41-community-log

4

3 に答える 3

5

バージョン2000がいくつかのあいまいなクエリを受け入れ、2005がエラーをスローするMSSQLServerにも同様の問題があります。基本的に、新しいバージョンはより厳格なようです。

原則として、テストサーバーと本番サーバーの両方で同じDBバージョンを使用して、コードの一部がテストマシンで機能し、本番で失敗するこのタイプの動作を回避する必要があります。

于 2008-12-03T13:25:21.580 に答える
2

2台のサーバーはどのSQLモードになっていますか?片方がもう片方よりも厳しく設定されていると想像できます。

于 2008-12-03T13:45:11.570 に答える
0

Tomalak は正しいと思います。MySQL の管理設定には、問題を解決できる厳密なモードがあります。

データベースの作成中に選択したことを思い出しますが、管理 GUI から調整できます。

現在、MySQL には重大なバグがいくつかあります。可能であれば、SQL Server Express への移行を検討してください...

Sun は財政難に陥っており、MySQL がどうなるかはわかりません。

于 2008-12-03T13:51:02.480 に答える