2016-07-20 9 views
0

どのような種類のデータベースでも可能なテーブルで簡単に検索しようとしています。次のクエリはほとんどのデータベースを処理していますが、私はmysqlで動作する解決策を見つけることができません。 データベース内のテーブルは、アクティブオブジェクトフレームワークによって生成されるため、これらのインスタンスの名前や設定を変更することはできません。ここでpostgresとmysqlで一般的な大文字の検索が動作しない

は、すべてのデータベースが、MySQL上で正常に動作クエリです:

は「真= "SHARED" と上のような "CONTAINS_PROJECT" =真と上( "FILTER_NAME") "AO_69D057_FILTER"(SELECT * FROM %pr% ')。

MySqlは何らかの理由で二重引用符で表名を使用できません。引用符で囲まれていないテーブル名を使用すると、MySQLでは動作しますが、Postgresでは動作しません。 Postgresは、引用符で囲まれていないため、テーブル名を小文字に変換しています。 AOはテーブル名を大文字で生成しています。

別名も使用しようとしましたが、文の評価階層のために動作できません。

どのようにテーブル名の問題を取り除くための任意の提案?

+0

可能な複製(http://stackoverflow.com/questions/13884854/mysql:

SET SQL_MODE=ANSI_QUOTES;

ここではそれについてのドキュメントがあります-double-quoted-table-names) –

答えて

0

デフォルトでは、二重引用符が列に使用されます。あなたはそれを変更することができ :[mysqlの二重引用符で囲まれたテーブル名]の http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

+0

Diogoありがとう、私のアプリは、私が知らない顧客がインストールされたインスタンスで実行されているので、私は何も変更することはできません。 –

+0

http://dev.mysql.com/doc/refman/5.7/en/sql-mode.htmlから: "各アプリケーションはセッションSQLモードを独自の要件に設定できます。" – NovaDenizen

+0

まず、Diogoのヒントをいただきありがとうございます。私はERマッパーとしてActiveObjectsを使用しているので、私はセッションとdb接続へのアクセス権がありません。この状況を上書きするためにハックを使用しました。クエリを実行しようとする前に、マッパーのDB接続設定を取得しています。それを行うとき、私はどのPhisical DBが使用されているかを教えるConnectionInfo Objectを求めることができます。 MySQLの場合は、コメントに記載されているプロパティを設定します。これはかなり汚いですが、これは動作します。私は、AOがERマッパーサイトから解決するためのバグを提出しました:https://ecosystem.atlassian.net/browse/AO-3371 –

関連する問題