Сбой установки схемы с помощью Sonar и MySQL 5.6 в windows


Я установил Sonar 3.4.1 и Mysql 5.6.10 на машине с Windows.

Я создал схему mysql " sonar "и предоставил все разрешения на нее пользователю"sonar". Я настроил сонар для использования этого пользователя. Я сделал это, следуя инструкциям на странице сонара codehaus.

При запуске sonar он начинает создавать таблицы в схеме. В какой-то момент возникает ошибка, указывающая, что "указанный ключ был слишком длинным; максимальная длина ключа составляет 767 байт" (полное сообщение об ошибке на конец).

Согласно этому вопросу длина индекса ограничена в mysql. Поскольку это документально подтверждено, я ожидаю, что Sonar не будет создавать индексы дольше, чем лимит. Очевидно, он пытается это сделать.

Я пропустил какую-то важную конфигурацию или две версии sonar и mysql несовместимы? Что я могу сделать, чтобы заставить его работать с этими версиями?

Полное сообщение об ошибке:

INFO   | jvm 1    | 2013/02/11 11:28:25 | 
INFO   | jvm 1    | 2013/02/11 11:28:25 | ==  CreateProperties: migrating ===============================================
INFO   | jvm 1    | 2013/02/11 11:28:25 | -- create_table("properties")
INFO   | jvm 1    | 2013/02/11 11:28:25 |    -> 0.0320s
INFO   | jvm 1    | 2013/02/11 11:28:25 |    -> 0 rows
INFO   | jvm 1    | 2013/02/11 11:28:25 | -- add_index(:properties, :prop_key, {:name=>"properties_key"})
2013.02.11 11:28:25 ERROR jruby.rack  unable to create shared application instance
org.jruby.rack.RackInitializationException: An error has occurred, all later migrations canceled:

ActiveRecord::JDBCError: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `properties_key` ON `properties` (`prop_key`)
    from 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 `execute'
[stacktrace omitted]
org.jruby.exceptions.RaiseException: (StandardError) An error has occurred, all later migrations canceled:

ActiveRecord::JDBCError: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `properties_key` ON `properties` (`prop_key`)
2013.02.11 11:28:25 ERROR jruby.rack  Error: application initialization failed
org.jruby.rack.RackInitializationException: An error has occurred, all later migrations canceled:

ActiveRecord::JDBCError: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `properties_key` ON `properties` (`prop_key`)
    from 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 `execute'
[stacktrace omitted]
org.jruby.exceptions.RaiseException: (StandardError) An error has occurred, all later migrations canceled:

ActiveRecord::JDBCError: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `properties_key` ON `properties` (`prop_key`)
INFO   | jvm 1    | 2013/02/11 11:28:25 | 2013-02-11 11:28:25.421:INFO::Started SelectChannelConnector@0.0.0.0:9000
1 3

1 ответ:

Вы правы, некоторые индексы создаются с длиной, превышающей максимальный предел. Проблема в том, что MySQL 5.6 больше не усекает индексы молча. Такое поведение, по-видимому, не ожидается (см. http://dev.mysql.com/doc/refman/5.6/en/innodb-restrictions.html и ошибка http://bugs.mysql.com/bug.php?id=68453).

Все это говорит о том, что Sonar 3.5 исправляет эту проблему, создавая индексы с правильной длиной (см. http://jira.codehaus.org/browse/SONAR-4137).