データベースの初期化に失敗する
現象1:
DB 初期化時、エラーコード -2000 が表示され、UC デバッグログに以下が記録される。
java.sql.SQLSyntaxErrorException: Access denied; you need (at least one of) the SUPER privilege(s) for this operation
原因1:
データベース管理者ユーザーが root 相当の権限を持っていない。
対応1:
root 相当の権限を持つ管理者ユーザーを使う。
それが不可能な場合、SUPER または SET_USER_ID 権限を持つ管理者ユーザーを使い、以下をアドバンスドオプションに設定する。
com.brekeke.chat.ChatAdminMethod.CREATE_DATABASE_GLOBAL_VARIABLES={}
現象2:
DB 初期化時、エラーコード -2000 が表示され、UC デバッグログに以下が記録される。
java.sql.SQLException: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
原因2:
データベース管理者ユーザーが root 相当の権限を持っておらず、バイナリログが有効で、log_bin_trust_function_creators が 0 の環境である。
対応2:
データベース製品の設定で log_bin_trust_function_creators を一時的に 1 に変更する。
初期化が完了したら元の値に戻す。
現象3:
DB 初期化時、エラーコード -2000 が表示され、UC デバッグログに以下が記録される。
java.sql.SQLSyntaxErrorException: Access denied; you need (at least one of) the SUPER or SET_USER_ID privilege(s) for this operation
原因3:
データベース管理者ユーザーが SET_USER_ID 権限を持っていない。
対応3:
SET_USER_ID 権限を持つ管理者ユーザーを使う。
それが不可能な場合、以下をアドバンスドオプションに設定する。
ただしこれを設定した場合、他のデータベースサーバへのダンプの移行はサポートされない。
com.brekeke.chat.ChatAdminMethod.CREATE_DATABASE_WITHOUT_DEFINER=true
現象4:
DB 初期化時、レプリケーションを構成しているデータベースで、以下のレプリケーションエラーが発生する。
Error 'This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)' on query.
原因4:
log_bin_trust_function_creators が 0 の環境である。
対応4:
レプリケーションを構成しているデータベースのうち、初期化処理を行う UC が直接アクセスしていない方のデータベース設定で log_bin_trust_function_creators を一時的に 1 に変更する。
初期化が完了したら元の値に戻す。
現象5:
DB 初期化時、エラーコード -2000 が表示され、UC デバッグログに以下が記録される。
java.sql.SQLException: The server time zone value '????' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
原因5:
データベース製品の設定で Java が認識できるタイムゾーンが設定されていない。
対応5:
まずデータベース製品のサーバのタイムゾーン設定を確認し、正しく設定されていなければ設定するだけで解消する場合もある。
その設定に合わせて、データベース初期化ダイアログのオプション欄に、例えば serverTimezone=Asia/Tokyo のように設定する。