3

Sonar3.4.1とMysql5.6.10をWindowsマシンにインストールしました。

mysqlスキーマ「sonar」を作成し、それに対するすべての権限をユーザー「sonar」に付与しました。このユーザーを使用するようにソナーを構成しました。私はコードハウスソナーページの指示に従ってこれを行いました。

sonarを開始すると、スキーマにテーブルの作成が開始されます。ある時点で、「指定されたキーが長すぎました。最大キー長は767バイトです」というエラーが発生します(最後に完全なエラーメッセージが表示されます)。

この質問によると、インデックスの長さはmysqlで制限されています。これは文書化されているため、Sonarは制限を超えるインデックスを作成しないことを期待しています。明らかにそれはそうしようとします。

私はいくつかの重要な構成を見逃しましたか、それともソナーとmysqlの2つのバージョンは互換性がありませんか?これらのバージョンで動作させるにはどうすればよいですか?

完全なエラーメッセージ:

情報| jvm 1 | 2013/02/11 11:28:25 |
情報| jvm 1 | 2013/02/11 11:28:25 | == CreateProperties:移行============================================= ==
情報| jvm 1 | 2013/02/11 11:28:25 | --create_table( "properties")
情報| jvm 1 | 2013/02/11 11:28:25 | -> 0.0320s
情報| jvm 1 | 2013/02/11 11:28:25 | ->0行
情報| jvm 1 | 2013/02/11 11:28:25 | --add_index(:properties、:prop_key、{:name => "properties_key"})
2013.02.1111:28:25エラーjruby.rackは共有アプリケーションインスタンスを作成できません
org.jruby.rack.RackInitializationException:エラーが発生しました。それ以降の移行はすべてキャンセルされました:

ActiveRecord :: JDBCError:指定されたキーが長すぎました。キーの最大長は767バイトです。CREATEINDEX`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バイトです。CREATEINDEX`properties_key`ON `properties`(` prop_key`)
2013.02.11 11:28:25エラーjruby.rackエラー:アプリケーションの初期化に失敗しました
org.jruby.rack.RackInitializationException:エラーが発生しました。それ以降の移行はすべてキャンセルされました:

ActiveRecord :: JDBCError:指定されたキーが長すぎました。キーの最大長は767バイトです。CREATEINDEX`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バイトです。CREATEINDEX`properties_key`ON `properties`(` prop_key`)
情報| jvm 1 | 2013/02/11 11:28:25 | 2013-02-11 11:28:25.421:INFO :: Started SelectChannelConnector@0.0.0.0:9000
4

1 に答える 1

2

そうです、一部のインデックスは最大制限を超える長さで作成されます。問題は、MySQL5.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を参照)。

于 2013-03-05T21:42:41.253 に答える