頑固なMySQLクエリに問題があります。それは非常に長くて複雑なクエリです。残念です。私は本当にそれを見つけるために最善を尽くしましたが、私はここで手を使うことができました。MySQL:unionクエリはMySQL 5.5で失敗し、MySQL 5.1で動作します
次のクエリは、information_schemaの列情報とnexedit_schemaというテーブルの列情報の完全な外部結合をエミュレートするために使用されます。 PHP変数$ dbには、後者のテーブルを含むターゲットデータベースが含まれています。
クエリは実際に自分のサーバー(MySQLバージョン5.1)で正常に実行されますが、友人のサーバー(MySQLバージョン5.5)では実行できません。それは私が近くに構文エラーがあることを主張「(schema_tables.db_table ONを...」
を私はおそらく本当に愚かな何かを望むよ。誰でも親切にも私を助けるために?
SELECT information_schema.tables.table_name, schema_tables.db_table, schema_tables.ne_page
FROM information_schema.tables
LEFT JOIN (
(SELECT DISTINCT db_table, ne_page FROM {$db}.nexedit_schema)
AS schema_tables)
ON (schema_tables.db_table = information_schema.tables.table_name
COLLATE utf8_unicode_ci)
WHERE information_schema.tables.table_schema = '{$db}'
AND information_schema.tables.table_name NOT LIKE 'nexedit_%'
UNION
SELECT information_schema.tables.table_name, schema_tables.db_table, schema_tables.ne_page
FROM information_schema.tables
RIGHT JOIN (
(SELECT DISTINCT db_table, ne_page FROM {$db}.nexedit_schema)
AS schema_tables)
ON (schema_tables.db_table = information_schema.tables.table_name
COLLATE utf8_unicode_ci)
WHERE information_schema.tables.table_schema IS NULL
AND schema_tables.db_table NOT LIKE 'nexedit_%'
GROUP BY information_schema.tables.table_name,schema_tables.db_table;
Re: "それは申し訳ありませんが、それについて申し訳ありません":それを修正しないでください:手動で '$ db'の値で置き換えてみましたか? MySQLのコマンドラインでクエリを実行していますか? 'UNION'の1つのブランチを切り取り、ブランチはエラーをトリガしますか? – ruakh
私は後者の提案を試していない、私はいくつかの結果を持って戻ってきます。 – DriesOeyen
@ruakh私は、phpMyAdminでunion'dクエリを別々に実行しようとしました。どちらも期待通りに動作するため、問題は何とかUNIONコマンドそのものと思われます。興味深いことに、2番目のクエリは、この特定のケースでは結果を返さない(とは思わない)ことに注意してください(他の場合には必要ですが)。 – DriesOeyen