私の会社では、MySQL 5からPostgreSQL 8.4に切り替えるのはプロジェクトのフロントエンドがPHPだからサーバー部分はLISPなのでMySQLの準備されたステートメントに問題があります。MySQL 5からPostgreSQL 8.4まで、大文字と小文字を区別する規約、PostgreSQLと一緒に保存する
これはちょうど理由の1つで、現在私が管理しているものではありませんので、現在のところ、マイグレーションする必要がある表が約12個あるDBがあります。これはMySQLであり、次のような大文字と小文字を区別するSQL規約を使用しています。
すべてのテーブルが複数のテーブル名(複数ではありません)で始まり、単語は大文字で区切られます。 私はPHP PDOをフロントエンドで使用していますが、SELECT * FROM Posts
のようなクエリはたくさんありますが、PostgreSQLではうまく機能していますが、PostgreSQLではうまく機能しています。 SELECT * FROM "Posts"
であるか、移行後のテーブルがPostgreSQLで小文字になるはずです(二重引用符が気になります)。
両方の解決策がうまくいけば、私は3番目のものに満足しています(以前のようにテーブルを維持する方法を見つけて、まだPostgreSQLで動作しているなど)。しかし、それが可能ではない場合、私はここからそれをする方法をアドバイスしていただければ幸いです。例えば、大文字と小文字を区別するようにテーブルを作成し、テーブルとカラム名を二重引用符で囲んでdbに問い合わせ、現在のクエリを変更するか、 post_title、post_contentなどの単語間の区切り記号としてアンダースコアを使用し、すべての現在のクエリを変更します。長期的にはこれが最善のことであることが最も重要です(プロジェクトが成長する)。
PostgreSQLでどのようにテーブルを作成しましたか?あなたはテーブルと列の名前を偶然引用しましたか? –
@ muのステートメントを明確にする:テーブル名を引用せずにテーブルを作成すると、PostgreSQLはテーブル名の大文字と小文字を区別しない検索を自動的に実行するはずです。テーブルを作成して識別子(「MyTable」など)を引用した場合、PostgreSQLはテーブル名の大文字と小文字を区別したリテラル一致を実行します。あなたの識別子を引用しないでください。 – Sean