問題
- 読み取り/書き込みデータベース分割を使用する環境をセットアップする場合、Liferay は構成されたデータベースの代わりに Hypersonic (HSQL) を使用しようとするように見えます。起動ログには次のように記載されています。
WARN [main][DialectDetector:100] Liferay is configured to use Hypersonic as its database. Do NOT use Hypersonic in production. Hypersonic is an embedded database useful for development and demonstration purposes. The database settings can be changed in portal-ext.properties.
INFO [main][DialectDetector:158] Using dialect com.liferay.portal.dao.orm.hibernate.HSQLDialect for HSQL Database Engine 2.3
INFO [main][DialectDetector:158] Using dialect org.hibernate.dialect.MySQLDialect for MySQL 5.7 - Hypersonic は本番環境ではサポートされていないため、Liferay が現在この環境で HSQL を使用しているか MySQL を使用しているかを知ることはできますか? /hyperonic ディレクトリが作成されず、起動時にこのログが表示されないようにする構成変更はありますか?
Environment
- DXP 7.1
解決策
- /hypersonic ディレクトリが作成されないようにし、HSQL メッセージがログに記録されないようにするには、
jdbc.default.*で始まるプロパティを portal-ext.properties ファイルから削除する代わりに 読み取り/書き込み構成手順を実行します。、jdbc.read.*およびjdbc.write.*プロパティを追加するときに、そのプロパティ セットをそのまま (コメントなし) にします。したがって、3 つのセットすべてが含まれます。 例:
jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://localhost:port/WriteDatabaseName?characterEncoding=UTF-8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true
jdbc.default.username=username
jdbc.default.password=password
jdbc.read.driverClassName=com.mysql.jdbc.Driver
jdbc.read.url=jdbc:mysql://localhost:port/ReadDatabaseName?characterEncoding=UTF-8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true
jdbc.read.username=username
jdbc.read.password=password
jdbc.write.driverClassName=com.mysql.jdbc.Driver
jdbc.write.url=jdbc:mysql://localhost:port/WriteDatabaseName?characterEncoding=UTF-8&dontTrackOpenResources=true&holdResultsOpenOverStatementClose=true&useFastDateParsing=false&useUnicode=true
jdbc.write.username=username
jdbc.write.password=password
... - または、
jdbc.read.*およびjdbc.write.*プロパティ がポータルによって取得されると Hypersonic は使用されないため、ログ内の HSQL メッセージは無視できます。 この方法を選択する場合、初めてバンドルを起動するときに、portal-ext.properties ファイル でsetup.wizard.enabled=falseを設定することをお勧めします。これにより、バンドルがセットアップを起動できなくなります。最初の起動時にウィザードを起動し、その最初の起動の UI 内で「既定のデータベース (Hypersonic)」というメモが表示されます。
追加情報
-
この動作は、 DBInitUtil クラスの現在の設計が原因で観察されます。これは、
jdbc.default.* で始まるポータル プロパティを ((読み取り/書き込み分割を使用する環境の構成済みプロパティ内に必ずしも存在するとは限りません)。 その後すぐにinfrastructure-spring.xmlファイルが読み込まれるときに) 明示的に検索します。起動時にdynamic-data-source-infrastructure-spring.xml追加で読み込まれると、ポータルは追加のjdbc.read.*およびjdbc.write.*プロパティを認識できるようになり、ポータル操作用のこれらのプロパティで定義されたデータベース。 - これを行う方法はデータベースベンダーによって異なりますが、必要に応じて、読み取りおよび書き込みデータベース (Liferay の外部) の両方でトランザクションログを有効にして、読み取りおよび書き込みトランザクションが関連するそれぞれのデータベースを期待どおりに使用しているかどうかを確認できます。
-
DBInitUtil クラス
dynamic-data-source-infrastructure-spring.xmlファイルが追加でチェックされるのを待ってから、ポータルがデフォルトで HSQL に設定されるのを待つために、フィーチャー リクエストが開かれました。ここでフォローできます: LPS-129633。