Uploaded image for project: 'Archiva'
  1. Archiva
  2. MRM-227

Archiva doesn't suppost UTF-8 databases in Mysql

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Duplicate
    • 1.0-alpha-1
    • 1.0-alpha-2
    • Users/Security
    • None
    • 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

    Description

      If the mysql database is created with Collation utf8_unicode_ci I receive this error when tables are created :

      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
      ...
      

      Even if I configure the driver with :

      <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&amp;useUnicode=true&amp;characterEncoding=UTF8"/>
      </Context>
      

      If I don't use a multibytes encoding, it's working well (with latin1_general_ci)

      Attachments

        Issue Links

          Activity

            People

              joakime Joakim Erdfelt
              aheritier Arnaud Heritier
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: