はかますたいる!きょろの技的雑記

井上恭輔(@kyoro353)の私的かつ技的な日記です。米国サンフランシスコで暮らすエンジニアです。

monoからのMySQL接続に希望の光!

ネット上の資料やMySQLのオフィシャルサイトには「簡単にできるぜ」的な事が書いてあるのだが、何度やってもどうやってもmono上ではMySQL Connector/Netが上手く動かなかった。
どうやっても最後の最後で例外を吐いて死ぬ。


かれこれ1年くらいふと思ったときに挑戦していたのだが、なかなか上手くいかない。
「まぁmonoだしな〜」と半ば諦めていたのだが、本日こんな記事を発見。


【Monoで他のDBも使ってみたよ!(PostgreSQL、MySQL編) 】
http://codezine.jp/article/detail/2913?p=4

当初、「Connector/Net 5.2.3」の「Windows Binaries, no installer (ZIP)」版を使用し、接続確認を行ったところ

Unhandled Exception: System.ArgumentException: Encoding name 'sjis' not supported
Parameter name: name

という例外が発生しました。そこで「Sources (ZIP)」版を確認してみると、ソース資源内の「CharSetMap.cs」に以下の修正を行う必要があることが分かり、

104行目
mapping.Add("sjis", new CharacterSet("sjis", 2));
変更
mapping.Add("sjis", new CharacterSet("shift_jis", 2));

 次の手順で対応を行いました。

まじか!!!!!!!!!
MySQLのコードが間違ってたのか…俺が甘かったぜ。
帰って早速やってみる!!