最近サーバーを変更しました。まだMySQLを使用しているようですが、以前と同じバージョンまたは同じ方法でセットアップされているとは思いません。
最も顕著な影響は私のJOINクエリにあります。基本的に、INNER JOINを使用する一部のクエリは、最後のサーバーでコードが正常であると確信している場合に、あいまいな列エラーをスローします。
table1
t1_id int primary key
name text
map
t1_id int
t2_id int
table2
t2_id int primary key
name text
table1はtable2と1対多の関係にあります。通常、table1とそのすべてのtable2エントリから行を取得するには、次のようにします。
SELECT * FROM table1
INNER JOIN map USING(t1_id)
INNER JOIN table2 USING(t2_id)
WHERE table1.t1_id=1;
ただし、これは毎回あいまいな列エラーをスローします。これを回避する唯一の方法は、を使用することです
SELECT * FROM table1
INNER JOIN map ON(table1.t1_id=map.t1_id)
INNER JOIN table2 ON(map.t2_id=table2.t2_id)
WHERE table1.t1_id=1;
バージョン5.1.56-community-logを除いて、サーバー構成についてお話しできることはあまりありません。Linux(おそらくDebian)を実行していると思います。
これは私のクエリの問題ですか、それとも使用しているMySQLのバージョンと関係がありますか?