この記事は、Liferayプラットフォームのアップグレード時に発生する可能性があり、ユーザーの間で混乱を招いている偽の否定的な警告メッセージについて説明しています。
Liferay DXPのアップグレード処理中に、以下のようなSQLの例外でいくつかのWARNメッセージが発行されます:
11:01:50,141 WARN [main][UpgradeProcess:434] Fallback to recreating the table java.sql.SQLException: ORA-22859: invalid modification of columns_ [Sanitized] at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1035) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183) at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:942) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1223) at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1711) at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1679) at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:275) at com.zaxxer.hikari.pool.ProxyStatement.executeUpdate(ProxyStatement.java:120) at com.zaxxer.hikari.pool.HikariProxyStatement.executeUpdate(HikariProxyStatement.java) at com.liferay.portal.dao.db.BaseDB.runSQL(BaseDB.java:293) at com.liferay.portal.dao.db.BaseDB.runSQL(BaseDB.java:262) at com.liferay.portal.kernel.dao.db.BaseDBProcess.runSQL(BaseDBProcess.java:66) at com.liferay.portal.kernel.upgrade.UpgradeProcess.alter(UpgradeProcess.java:406) at com.liferay.portal.upgrade.v7_0_0.UpgradeAsset.doUpgrade(UpgradeAsset.java:44) at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:90) at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:117) at com.liferay.portal.upgrade.UpgradeProcess_7_0_0.doUpgrade(UpgradeProcess_7_0_0.java:73) at com.liferay.portal.kernel.upgrade.UpgradeProcess.upgrade(UpgradeProcess.java:90) at com.liferay.portal.kernel.upgrade.util.UpgradeProcessUtil._upgradeProcess(UpgradeProcessUtil.java:175) at com.liferay.portal.kernel.upgrade.util.UpgradeProcessUtil.upgradeProcess(UpgradeProcessUtil.java:143) at com.liferay.portal.kernel.upgrade.util.UpgradeProcessUtil.upgradeProcess(UpgradeProcessUtil.java:125) at com.liferay.portal.events.StartupHelper.upgradeProcess(StartupHelper.java:164) at com.liferay.portal.events.StartupHelperUtil.upgradeProcess(StartupHelperUtil.java:81) at com.liferay.portal.tools.DBUpgrader.upgrade(DBUpgrader.java:153) at com.liferay.portal.tools.DBUpgrader.main(DBUpgrader.java:99) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498)
解決策
この動作は、Fix Pack DE-41以前のLiferay環境では予期されるものであるため、現時点では対処の必要はありません。 この警告は、テーブルを直接変更できない状況に直面した後、アップグレードプロセスが該当するテーブルを適切に再作成するためのフォールバックメカニズムを実行したことを示します。
注: Fix Pack DE-41以上において、フォールバックメッセージをより分かりやすくするための改善(LPS-78007)が行われています。 同じタイプのSQL例外が発生した場合、アップグレードプロセスは代わりに以下のメッセージを出力します:
Applying fallback consisting in recreating the table due to: SQL EXCEPTION
テーブルの再作成とアップグレードが完了すると、以下のような確認メッセージが表示されます:
Fallback applied successfully. Table upgraded correctly.