これらの解決策を使用して、接続で遭遇する可能性のある問題を解決してください。
IBM Db2 for z/OS:Db2 for z/OSサーバーに接続しようとすると、スキーマリストの取得でエラーが発生する
Db2 for z/OSサーバーへの接続をテストしているときに、接続がスキーマ・リストを取得できない場合、次のようなエラーが表示されることがある:
CDICC7002E: The assets request failed: CDICO2064E: The metadata for the column TABLE_SCHEM could not
be obtained: Sql error: [jcc][10150] [10300][4.28.11] Invalid parameter: Unknown column name
TABLE_SCHEM. ERRORCODE=-4460, SQLSTATE=null
問題の解決
Db2 for z/OSサーバーで、DESCSTATサブシステム・パラメーターを 'No
に設定します。 詳細はDESCRIBE FOR STATICフィールド(DESCSTATサブシステム・パラメータ)を参照のこと。
Informix接続のデータをロードするために、非推奨の機能から生成されたコードを実行できない
"DatabaseError:実行に失敗しました。 Informixデータベースから非推奨の機能を使用してデータをロードするために生成されたコードを実行しているときに、大文字の名前を持つテーブルにクエリを実行しようとすると、"unable to rollback "と表示されました。
原因
Informixデータベースは大文字と小文字を区別する識別子が設定されているため、生成されたコードを更新する必要があります。
問題の解決
可能であれば、Flight serviceを使用して生成されるコードを使用して、Informix接続からデータをロードするように変更してください。 非推奨の機能によって生成されたコードを使い続けたい場合は、生成されたコードを以下のように編集する必要がある:
Pythonの場合、接続に接続プロパティ'
'DELIMIDENT=Y'
を追加し、大文字の識別子を二重引用符(""
)で囲みます。以下の行を置き換えてください:Informix_connection = jaydebeapi.connect('com.informix.jdbc.IfxDriver', '{}://{}:{}/{}:user={};password={};'.format('jdbc:informix-sqli', Informix_metadata['host'], Informix_metadata['port'], Informix_metadata['database'], Informix_metadata['username'], Informix_metadata['password']), [Informix_metadata['username'], Informix_metadata['password']]) query = 'SELECT * FROM informix.FVT_EMPLOYEE'
対象:
Informix_connection = jaydebeapi.connect('com.informix.jdbc.IfxDriver', '{}://{}:{}/{}:user={};password={};DELIMIDENT=Y;'.format('jdbc:informix-sqli', Informix_metadata['host'], Informix_metadata['port'], Informix_metadata['database'], Informix_metadata['username'], Informix_metadata['password']), [Informix_metadata['username'], Informix_metadata['password']]) query = 'SELECT * FROM informix."FVT_EMPLOYEE"'
Spark withPythonの場合は、置き換えてください:
data_df_0 = sparkSession.read.format('jdbc') \ .option('url', 'jdbc:informix-sqli://{}:{}/{}'.format(Informix_metadata['host'],Informix_metadata['port'],Informix_metadata['database'])) \ .option('dbtable', 'informix.FVT_EMPLOYEE') \ .option('user', Informix_metadata['username']) \ .option('password', Informix_metadata['password']).load() data_df_0.show(5)
対象:
data_df_0 = sparkSession.read.format('jdbc') \ .option('url', 'jdbc:informix-sqli://{}:{}/{}'.format(Informix_metadata['host'],Informix_metadata['port'],Informix_metadata['database'])) \ .option('dbtable', 'informix."FVT_EMPLOYEE"') \ .option('DELIMIDENT', 'Y') \ .option('user', Informix_metadata['username']) \ .option('password', Informix_metadata['password']).load() data_df_0.show(5)
Rの場合、接続に接続プロパティ'
'DELIMIDENT=Y'
を追加し、すべての大文字の名前を二重引用符(""
)で囲む。以下の行を置き換える:paste("jdbc:informix-sqli://", Informix_credentials[][["host"]], ":", Informix_credentials[][["port"]], "/", Informix_credentials[][["database"]], ":user=", Informix_credentials[][["username"]], ";password=", Informix_credentials[][["password"]], ";", sep=""), ... query <- "SELECT * FROM myschema.MY_TABLE"
対象:
paste("jdbc:informix-sqli://", Informix_credentials[][["host"]], ":", Informix_credentials[][["port"]], "/", Informix_credentials[][["database"]], ":user=", Informix_credentials[][["username"]], ";password=", Informix_credentials[][["password"]],";DELIMIDENT=Y", ";", sep=""), ... query <- "SELECT * FROM myschema.\"MY_TABLE\""