Сбой установки схемы с помощью 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 ответ:
Вы правы, некоторые индексы создаются с длиной, превышающей максимальный предел. Проблема в том, что 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).