Symfoware Serverのロールやリレーションが未存在、パスワード認証に失敗のエラーについて
Symfoware Server (Open/Postgres共通)のよくあるご質問を検索できます。
Symfoware Serverの技術情報はこちら
- Symfoware Serverで、以下のようなエラーになりました。原因と対処方法を教えてください。
- role "xxx" does not exist
- relation "xxx" does not exist
- password authentication failed for user "xxx"
- [原因]
SQLコマンドに指定したロール名やテーブル名、パスワードなどの識別子に英大文字が含まれ、その識別子が二重引用符で囲まれていないことが原因である場合があります。
Symfoware Serverは、二重引用符で囲まれていない識別子に指定された英大文字は、英小文字として扱う仕様です。この仕様により、英大文字で定義されているロール名やテーブル名、パスワードと一致せず、未存在エラーやパスワード認証に失敗したエラーになった可能性があります。
例えば、CREATE ROLEでロールを作成する際、二重引用符で囲んで『”Joe”』と指定したとします。
CREATE ROLE “Joe”
その後、GRANTにより、『Joe』に対してテーブル(myschema.products)にすべての権限を付与する際、以下のように、二重引用符で囲まずに『Joe』を指定すると、ロール名には『joe』が指定されたと解釈されるため、「role "joe" does not exist」のエラーになります。
GRANT ALL ON myschema.products to Joe
[対処方法]
SQLコマンドに指定した識別子内の英大文字を、指定どおり英大文字として扱いたい場合は、識別子を二重引用符で囲んでください。
例) GRANT ALL ON myschema.products to "Joe"
詳細は以下のマニュアルを参照してください。
FUJITSU Software Symfoware Server V12.6.0
PostgreSQL 12.7 Documentation (*1)
Part II. The SQL Language
Chapter 4. SQL Syntax
4.1. Lexical Structure
4.1.1. Identifiers and Key Words
(*1)Solarisの場合は以下のマニュアルを参照してください。
PostgreSQL 9.6.2文書
パート II. SQL言語
第4章 SQLの構文
4.1. 字句の構造
4.1.1. 識別子とキーワード
なお、上記以外の製品バージョン/レベルについては、該当するマニュアル箇所を参照してください。
製品・サービス区分 | Symfoware | ||||
---|---|---|---|---|---|
製品・サービス情報 |
|
||||
アンサー種別 | 設計/開発 |