我在 Windows 机器上安装了 Sonar 3.4.1 和 Mysql 5.6.10。
我创建了一个 mysql 模式“声纳”并将其所有权限授予用户“声纳”。我已将声纳配置为使用此用户。我按照codehaus 声纳页面上的说明进行了此操作。
启动声纳时,它开始在模式中创建表。有时会发生错误,指出“指定的密钥太长;最大密钥长度为 767 字节”(最后有完整的错误消息)。
根据这个问题,mysql中的索引长度是有限的。因为这是记录在案的,所以我希望 Sonar 创建的索引不会超过限制。显然它试图这样做。
是我遗漏了一些重要的配置,还是 sonar 和 mysql 的两个版本不兼容?我该怎么做才能让它与这些版本一起使用?
完整的错误信息:
信息 | 虚拟机 1 | 2013/02/11 11:28:25 | 信息 | 虚拟机 1 | 2013/02/11 11:28:25 | == CreateProperties:迁移 ============================================= == 信息 | 虚拟机 1 | 2013/02/11 11:28:25 | -- create_table("属性") 信息 | 虚拟机 1 | 2013/02/11 11:28:25 | -> 0.0320s 信息 | 虚拟机 1 | 2013/02/11 11:28:25 | -> 0 行 信息 | 虚拟机 1 | 2013/02/11 11:28:25 | -- add_index(:properties, :prop_key, {:name=>"properties_key"}) 2013.02.11 11:28:25 错误 jruby.rack 无法创建共享应用程序实例 org.jruby.rack.RackInitializationException:发生错误,所有后续迁移都取消: ActiveRecord::JDBCError: 指定的键太长;最大密钥长度为 767 字节: CREATE INDEX `properties_key` ON `properties` (`prop_key`) 来自 D:/Programs/sonar-3.4.1/war/sonar-server/WEB-INF/gems/gems/activerecord-jdbc-adapter-1.1.3/lib/arjdbc/jdbc/adapter.rb:183:in `执行' [省略堆栈跟踪] org.jruby.exceptions.RaiseException: (StandardError) 发生错误,所有后来的迁移都取消了: ActiveRecord::JDBCError: 指定的键太长;最大密钥长度为 767 字节: CREATE INDEX `properties_key` ON `properties` (`prop_key`) 2013.02.11 11:28:25 ERROR jruby.rack 错误:应用程序初始化失败 org.jruby.rack.RackInitializationException:发生错误,所有后续迁移都取消: ActiveRecord::JDBCError: 指定的键太长;最大密钥长度为 767 字节: CREATE INDEX `properties_key` ON `properties` (`prop_key`) 来自 D:/Programs/sonar-3.4.1/war/sonar-server/WEB-INF/gems/gems/activerecord-jdbc-adapter-1.1.3/lib/arjdbc/jdbc/adapter.rb:183:in `执行' [省略堆栈跟踪] org.jruby.exceptions.RaiseException: (StandardError) 发生错误,所有后来的迁移都取消了: ActiveRecord::JDBCError: 指定的键太长;最大密钥长度为 767 字节: CREATE INDEX `properties_key` ON `properties` (`prop_key`) 信息 | 虚拟机 1 | 2013/02/11 11:28:25 | 2013-02-11 11:28:25.421:INFO::Started SelectChannelConnector@0.0.0.0:9000