jboss5 启动时报HsqlException:length must be specified in type definition:VARBINARY错误
https://community.jboss.org/message/585994
EJBTimerService error on JBoss5 start up - without applications
此问题已回答。
Hi
I just starting to use JBoss5 with HSQLDB2.0.1 rc 3. Just installed and configured JBoss and HSQLDB, without any deployment of application.
This is what I get in the log of server startup:
16:49:17,405 ERROR [AbstractKernelController] Error installing to Start: name=jboss.ejb:persistencePolicy=database,service=EJBTimerService state=Create mode=Manual requiredState=Installed
java.sql.SQLException: length must be specified in type definition: VARBINARY
at org.hsqldb.jdbc.Util.sqlException(Util.java:215)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1826)
at org.hsqldb.jdbc.JDBCStatement.executeUpdate(JDBCStatement.java:207)
at org.jboss.resource.adapter.jdbc.WrappedStatement.executeUpdate(WrappedStatement.java:249)
at org.jboss.ejb.txtimer.GeneralPurposeDatabasePersistencePlugin.createTableIfNotExists(GeneralPurposeDatabasePersistencePlugin.java:175)
at org.jboss.ejb.txtimer.DatabasePersistencePolicy.startService(DatabasePersistencePolicy.java:104)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:376)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:322)
at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
...
and then:
DEPLOYMENTS MISSING DEPENDENCIES:
Deployment "jboss.ejb:service=EJBTimerService" is missing the following dependencies:
Dependency "jboss.ejb:persistencePolicy=database,service=EJBTimerService" (should be in state "Create", but is actually in state "**ERROR**")
DEPLOYMENTS IN ERROR:
Deployment "jboss.ejb:persistencePolicy=database,service=EJBTimerService" is in error due to the following reason(s): org.hsqldb.HsqlException: length must be specified in type definition: VARBINARY, **ERROR**
Any help would be really appreciated
Can you try this:
- Open the JBOSS_HOME/server/< servername>/conf/standardjbosscmp-jdbc.xml in a text editor
- Search for the "Hypersonic SQL" type-mappping in that file. It will look something like this:
<type-mapping>
<name>Hypersonic SQL</name>
<row-locking-template/>
...
<mapping>
<java-type>java.lang.Object</java-type>
<!-- hsqldb only supports directly serializable objects for sql type OBJECT -->
<jdbc-type>VARBINARY</jdbc-type>
<sql-type>VARBINARY</sql-type>
</mapping>
...
</type-mapping>
Try changing it to:
<type-mapping>
<name>Hypersonic SQL</name>
<row-locking-template/>
...
<mapping>
<java-type>java.lang.Object</java-type>
<!-- hsqldb only supports directly serializable objects for sql type OBJECT -->
<jdbc-type>VARBINARY</jdbc-type>
<sql-type>VARBINARY(1024)</sql-type>
</mapping>
...
</type-mapping>
See the change in the sql-type value. I set the length randomly to 1024.
After this change, restart the server and see if it works.