XamarinでMySqlを使おうとしたらこのエラーが出て2日くらい詰まってました。
解決方法をシェアしたいと思います。
エラーが出る場所
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
MySqlConnectionStringBuilder builder = new MySqlConnectionStringBuilder() { Server = "sample.com", Port = 3306, Database = "test", UserID = "id", Password = "password", }; MySqlConnection connection = new MySqlConnection(builder.ToString()); try { if (connection.State == ConnectionState.Closed) { connection.Open(); Log.Debug("connect", "true"); } } catch(MySqlException e) { Log.Debug("connect", e.ToString()); } |
17行目のconnection.Open();のところで
1 |
System.TypeInitializationException: The type initializer for 'MySql.Data.MySqlClient.Replication.ReplicationManager' threw an exception. |
が出ました。
解決方法
Xamarin(Visual Studio)でMySqlを使うにはNuGetからMySqlのパッケージをインストールする必要があります。
ツール/NuGetパッケージマネージャ/ソリューションのNuGetパッケージの管理を選択してNuGetの管理画面に行き、
参照を選択して"xamarin mysql"と検索します。

このときMySqlと名の付くパッケージがいろいろ出てきますが、
Xamarin.MySql.Dataをインストールしてください
自分の方でSystem.TypeInitializationExceptionが出てきたのは、間違えてMySql.Dataをインストールしていたからです。
System.TypeInitializationException が出ている方は、MySql.DataをアンインストールしてからXamarin.MySql.Dataをインストールしてください。
以上です!
普通にGoogleで"C# MySql"とかで検索するとMySql.Dataのパッケージの方が出てくるので騙されますが、Xamarinの場合はXamarin.MySql.Dataの方だったんですね!
お疲れ様です!