sql >> データベース >  >> RDS >> PostgreSQL

Doctrine列IDがPostgreSQLに存在しません

    user 予約語current_userのエイリアスです 。

    regress=> SELECT * FROM user;
     current_user 
    --------------
     myusername
    (1 row)
    

    userを使用する場合 テーブル名として、予約語であるため、識別子を引用する必要があります。 例:

    SELECT id FROM "user";
    

    ORMは、すべての識別子、または少なくとも予約語を引用する必要があります。そうしないと、ORMのバグになります。予約されていない単語をテーブル名として使用することで、ORMのバグを回避できます。

    psqlでは少し疣贅だと思います バックスラッシュコマンドに渡す識別子を自動的に引用します。したがって、\d user 動作しますが、select * from user しません。 \d "user"と書く必要があります 。 \d MyTableの場合、大文字と小文字の区別についても同じ問題が発生します。 動作しますが、SELECT * FROM MyTable 動作しません。SELECT * FROM "MyTable"と記述する必要があります。 。

    HINTを与えるといいでしょう エラーでこれについてのメッセージ。残念ながら、「列が存在しません」というエラーが生成された時点では、パーサーとプランナーは実際には十分な情報を持っていないため、最初にキーワードを記述したことがわかります。表示されるのは、その時点での関数スキャンだけです。



    1. オラクルによるグローバリゼーション支援環境の構築

    2. 初心者向けSQLExpressを使用したPythonデータベースプログラミング

    3. 労働時間を保存し、効率的に照会するための最良の方法

    4. MySQLの連結と照合エラーの不正な組み合わせ