Archiva doesn't suppost UTF-8 databases in Mysql
------------------------------------------------
Key: MRM-227
URL: http://jira.codehaus.org/browse/MRM-227
Project: Archiva
Issue Type: Bug
Affects Versions: 1.0-beta-1
Environment: Linux jtbox01 2.4.21-37.0.1.ELsmp #1 SMP Wed Jan 11
18:35:45 EST 2006 i686 athlon i386 GNU/Linux
jdk1.5.0_07 + apache-tomcat-5.5.17 + mysql-5.0.22
Reporter: Arnaud Heritier
If the mysql database is created with Collation utf8_unicode_ci I receive this
error when tables are created :
{code}
2006-11-17 14:29:13,782 [http-8080-Processor25] ERROR RDBMS
- Error thrown executing CREATE TABLE `OPERATIONS`
(
`NAME` VARCHAR(256) BINARY NOT NULL,
`DESCRIPTION` VARCHAR(256) BINARY NULL,
`PERMANENT` BIT NOT NULL,
`RESOURCE_REQUIRED` BIT NOT NULL,
PRIMARY KEY (`NAME`)
) ENGINE=INNODB : Specified key was too long; max key length is 765 bytes
java.sql.SQLException: Specified key was too long; max key length is 765 bytes
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2998)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2927)
at com.mysql.jdbc.Statement.execute(Statement.java:535)
at
org.apache.tomcat.dbcp.dbcp.DelegatingStatement.execute(DelegatingStatement.java:261)
at
org.jpox.store.rdbms.table.AbstractTable.executeDdlStatement(AbstractTable.java:561)
at
org.jpox.store.rdbms.table.AbstractTable.executeDdlStatementList(AbstractTable.java:516)
at
org.jpox.store.rdbms.table.AbstractTable.create(AbstractTable.java:244)
at
org.jpox.store.rdbms.table.AbstractTable.exists(AbstractTable.java:287)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:3006)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2540)
at
org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2397)
at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:603)
at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:617)
at org.jpox.store.StoreManager.getDatastoreClass(StoreManager.java:1016)
at org.jpox.store.rdbms.RDBMSManager.getExtent(RDBMSManager.java:1134)
at
org.jpox.AbstractPersistenceManager.getExtent(AbstractPersistenceManager.java:2216)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getAllObjects(JdoTool.java:199)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getAllObjects(JdoTool.java:182)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.triggerInit(JdoTool.java:131)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getPersistenceManager(JdoTool.java:118)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getObjectById(JdoTool.java:236)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.objectExistsById(JdoTool.java:283)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoRbacManager.roleExists(JdoRbacManager.java:124)
at
org.codehaus.plexus.rbac.profile.AbstractRoleProfile.getRole(AbstractRoleProfile.java:236)
at
org.codehaus.plexus.rbac.profile.DefaultRoleProfileManager.getRole(DefaultRoleProfileManager.java:72)
at
org.codehaus.plexus.security.ui.web.checks.security.RequiredRolesEnvironmentCheck.validateEnvironment(RequiredRolesEnvironmentCheck.java:64)
at
org.codehaus.plexus.security.ui.web.interceptor.EnvironmentCheckInterceptor.init(EnvironmentCheckInterceptor.java:78)
at
org.codehaus.plexus.xwork.PlexusObjectFactory.buildInterceptor(PlexusObjectFactory.java:101)
at
com.opensymphony.xwork.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:48)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:702)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadInterceptorStack(XmlConfigurationProvider.java:569)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadInterceptorStacks(XmlConfigurationProvider.java:582)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadInterceptors(XmlConfigurationProvider.java:603)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:204)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:676)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)
at
com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:85)
at
com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:54)
at
com.opensymphony.xwork.DefaultActionProxy.<init>(DefaultActionProxy.java:57)
at
com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)
at
com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)
at
com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:88)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2006-11-17 14:29:13,783 [http-8080-Processor25] ERROR SCHEMA
- An exception was thrown while adding/validating class(es) : Specified
key was too long; max key length is 765 bytes
java.sql.SQLException: Specified key was too long; max key length is 765 bytes
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2998)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2927)
at com.mysql.jdbc.Statement.execute(Statement.java:535)
at
org.apache.tomcat.dbcp.dbcp.DelegatingStatement.execute(DelegatingStatement.java:261)
at
org.jpox.store.rdbms.table.AbstractTable.executeDdlStatement(AbstractTable.java:561)
at
org.jpox.store.rdbms.table.AbstractTable.executeDdlStatementList(AbstractTable.java:516)
at
org.jpox.store.rdbms.table.AbstractTable.create(AbstractTable.java:244)
at
org.jpox.store.rdbms.table.AbstractTable.exists(AbstractTable.java:287)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.addClassTablesAndValidate(RDBMSManager.java:3006)
at
org.jpox.store.rdbms.RDBMSManager$ClassAdder.run(RDBMSManager.java:2540)
at
org.jpox.store.rdbms.RDBMSManager$MgmtTransaction.execute(RDBMSManager.java:2397)
at org.jpox.store.rdbms.RDBMSManager.addClasses(RDBMSManager.java:603)
at org.jpox.store.rdbms.RDBMSManager.addClass(RDBMSManager.java:617)
at org.jpox.store.StoreManager.getDatastoreClass(StoreManager.java:1016)
at org.jpox.store.rdbms.RDBMSManager.getExtent(RDBMSManager.java:1134)
at
org.jpox.AbstractPersistenceManager.getExtent(AbstractPersistenceManager.java:2216)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getAllObjects(JdoTool.java:199)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getAllObjects(JdoTool.java:182)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.triggerInit(JdoTool.java:131)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getPersistenceManager(JdoTool.java:118)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.getObjectById(JdoTool.java:236)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoTool.objectExistsById(JdoTool.java:283)
at
org.codehaus.plexus.security.authorization.rbac.store.jdo.JdoRbacManager.roleExists(JdoRbacManager.java:124)
at
org.codehaus.plexus.rbac.profile.AbstractRoleProfile.getRole(AbstractRoleProfile.java:236)
at
org.codehaus.plexus.rbac.profile.DefaultRoleProfileManager.getRole(DefaultRoleProfileManager.java:72)
at
org.codehaus.plexus.security.ui.web.checks.security.RequiredRolesEnvironmentCheck.validateEnvironment(RequiredRolesEnvironmentCheck.java:64)
at
org.codehaus.plexus.security.ui.web.interceptor.EnvironmentCheckInterceptor.init(EnvironmentCheckInterceptor.java:78)
at
org.codehaus.plexus.xwork.PlexusObjectFactory.buildInterceptor(PlexusObjectFactory.java:101)
at
com.opensymphony.xwork.config.providers.InterceptorBuilder.constructInterceptorReference(InterceptorBuilder.java:48)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.lookupInterceptorReference(XmlConfigurationProvider.java:702)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadInterceptorStack(XmlConfigurationProvider.java:569)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadInterceptorStacks(XmlConfigurationProvider.java:582)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadInterceptors(XmlConfigurationProvider.java:603)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:204)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.loadConfigurationFile(XmlConfigurationProvider.java:676)
at
com.opensymphony.xwork.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:91)
at
com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:85)
at
com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:54)
at
com.opensymphony.xwork.DefaultActionProxy.<init>(DefaultActionProxy.java:57)
at
com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:46)
at
com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:216)
at
com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
at
com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:88)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
2006-11-17 14:29:13,783 [http-8080-Processor25] ERROR SCHEMA
- java.sql.SQLException: Specified key was too long; max key length is 765
bytes
...
{code}
Even if I configure the driver with :
{code}
<Context path="/archiva"
docBase="/projets/JTB/jtbdev02/base_archiva/archiva-webapp-1.0-SNAPSHOT.war"
debug="0">
<Resource name="jdbc/users" auth="Container" type="javax.sql.DataSource"
username="archiva"
password="?????????"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://jtbox01.fr.world.socgen:13306/archiva?autoReconnect=true&useUnicode=true&characterEncoding=UTF8"/>
</Context>
{code}
If I don't use a multibytes encoding, it's working well (with latin1_general_ci)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira