We are running Jive Messenger 2.3 backended by an Oracle 10g database (10.1.0.4.0) on a separate machine. We are using the Oracle “thin” JDBC driver. When upgrading to Wildfire Server 2.4.0, we receive this message:
2005.12.19 15:18:27 org.jivesoftware.database.DbConnectionManager.setConnectionProvider(DbConnection Manager.java:342) Database upgrade failed.
Please manually upgrade your database.
java.sql.SQLException: ORA-00911: invalid character
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:946)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:11 68)
at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1687)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1653)
at org.jivesoftware.database.DbConnectionManager.upgradeDatabase(DbConnectionManag er.java:773)
…
Investigating a bit, it appears the following string is being sent to the server:
UPDATE jiveVersion SET majorVersion=2, minorVersion=4;
The semicolon is tripping up Oracle; the statement works without the semicolon.
The other statement in the upgrade script is (without semicolon):
ALTER TABLE jiveGroupUser MODIFY username VARCHAR2(100) NOT NULL
This causes this error in Oracle 10g:
ORA-01442: column to be modified to NOT NULL is already NOT NULL
If the statement is modified as follows:
ALTER TABLE jiveGroupUser MODIFY username VARCHAR2(100)
it works OK and the non-null constraint is preserved.
Thanks,
Alex