e.g.
alter table MATCH_QUEUE_RULE alter column DIVISIONS_JSON CLOB;
The alter table command seems to execute properly, however on the next launch of the application, I see this stack trace. Any suggestestions would be greatly appreciated.
org.hsqldb.HsqlException: The table data is read only
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.persist.LobManager.setChars(Unknown Source)
at org.hsqldb.Session.performLOBOperation(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
at org.hsqldb.types.ClobDataID.setString(Unknown Source)
at org.hsqldb.types.CharacterType.castOrConvertToType(Unknown Source)
at org.hsqldb.types.CharacterType.convertToType(Unknown Source)
at org.hsqldb.TableWorks.checkConvertColDataType(Unknown Source)
at org.hsqldb.TableWorks.retypeColumn(Unknown Source)
at org.hsqldb.StatementSchema.getResult(Unknown Source)
at org.hsqldb.StatementSchema.execute(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source)
at org.hsqldb.persist.ScriptRunner.runScript(Unknown Source)
at org.hsqldb.persist.Log.processLog(Unknown Source)
at org.hsqldb.persist.Log.open(Unknown Source)
at org.hsqldb.persist.Logger.open(Unknown Source)
at org.hsqldb.Database.reopen(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.server.Server.openDatabases(Unknown Source)
at org.hsqldb.server.Server.run(Unknown Source)
at org.hsqldb.server.Server.access$000(Unknown Source)
at org.hsqldb.server.Server$ServerThread.run(Unknown Source)
A CHECKPOINT or SHUTDOWN after converting would have avoided this.
It seems you should be able to edit the .log file and delete the "alter table ... " statement. Once restarted, execute the statement followed by CHECKPOINT.
Thanks Fred.
What is the recommended use case for executing "shutdown"? I had been using server.shutdown(), but it seems that that is not enough?
Thanks again!
Execute the SQL statement "SHUTDOWN"