「MySQL Connector/NET」の版間の差分
imported>Administrator |
imported>Administrator |
||
(同じ利用者による、間の1版が非表示) | |||
120行目: | 120行目: | ||
MySQL Connector/NET 6.2.1 以降で廃止されたので、このオプションではなくSSL Modeオプションを使えとのこと。 | MySQL Connector/NET 6.2.1 以降で廃止されたので、このオプションではなくSSL Modeオプションを使えとのこと。 | ||
− | === | + | === 通信の暗号化の有無を指定する(新) === |
* SSL Mode | * SSL Mode | ||
* SslMode | * SslMode | ||
185行目: | 185行目: | ||
デフォルト:0 | デフォルト:0 | ||
− | + | 以下、[[Oracle]]と同じであれば、負荷が低いときはこの値に向かい接続を切り、無駄な接続維持をしない。また、アプリ起動直後などでこの値よりプールしている接続少ないは特に何もしないで増えるのを待つ。たとえばこの値が10に設定されていると10になるまで極力切断せずにプールし続けようとする。 | |
ソースも見ていないし、実際に試してもいないので、実際のところ本当にそうなのかは不明。 | ソースも見ていないし、実際に試してもいないので、実際のところ本当にそうなのかは不明。 |
2012年4月19日 (木) 04:15時点における最新版
MySQL Connector/NETとは、.NET Frameworkを用いたアプリからMySQLデータベースサーバーに接続するためのADO.NETプロバイダー(ライブラリ)である。
目次
- 1 インストール
- 2 ConnectionString
- 2.1 標準的な設定
- 2.2 接続先サーバーのアドレスを指定する
- 2.3 接続先サーバーのポート番号を指定する
- 2.4 接続プロトコルを指定する
- 2.5 初期データベースを指定する
- 2.6 ユーザー名を指定する
- 2.7 パスワードを指定する
- 2.8 通信の暗号化の有無を指定する(旧)
- 2.9 通信の暗号化の有無を指定する(新)
- 2.10 接続がタイムアウトするまでの時間を指定する
- 2.11 コマンドがタイムアウトするまでの時間を指定する
- 2.12 プリペアド・ステートメントの実行場所を指定する
- 2.13 文字コードを指定する
- 2.14 コネクション・プールの有無を指定する
- 2.15 コネクション・プールの最小値を指定する
- 2.16 コネクション・プールの最大数を指定する
- 3 備考
- 4 関連項目
- 5 参考文献
- 6 外部リンク
インストール[編集 | ソースを編集]
通常[編集 | ソースを編集]
- mysql-connector-net-version-noinstall.zip をダウンロードする。
http://www.mysql.com/downloads/connector/net/#downloads
- ダウンロードしたファイルを展開する。
$ unzip mysql-connector-net-version-noinstall.zip -d mysql-connector-net-version-noinstall
- 展開したディレクトリの中からmysql.data.dllファイルを探し出し、Monoで作ったアプリのインストールフォルダにコピーする。
$ find . -name mysql.data.dll
./v4/mysql.data.dll
./v2/mysql.data.dll
2012年3月5日時点で最新バージョンとなっていたmysql-connector-net-6.4.4-noinstall.zipの中には、v2/mysql.data.dllとv4/mysql.data.dllの2個あったが、名前から推測するに、たぶん.NET Framework 2.0と4.0用だと思うので、とりあえずv4/mysql.data.dllを入れてみた。
GACに登録しておく場合[編集 | ソースを編集]
Connector/NET コンポーネントを、gacutil コマンドで Global Assembly Cache に登録する :
$ gacutil /i MySql.Data.dll
Installed mysql.data.dll into the gac (/opt/novell/mono/lib/mono/gac)
インストールが完了すれば、Connector/NET コンポーネントとコンパイルされたアプリケーションは以後変更する必要はありません。しかし、アプリケーションをコンパイルする際、-r:MySqlData.dll コマンドライン オプションを使用して Connector/NET コンポーネントを確実に含むようにしてください。
ConnectionString[編集 | ソースを編集]
ConnectionStringの設定例を示す。
ConnectionStringに設定する項目名は宗教上の理由および政治上の理由により、同じ意味の異なる語句が大量に存在しており非常に紛らわしい。ここに記述してある項目は最新でもなく全てを網羅しているわけでもないのでMySQL公式サイト上のマニュアルを見るのが一番確実である[1]。
標準的な設定[編集 | ソースを編集]
MySQLサーバーの設定をいじってポート番号を変えてある場合はポート番号を明示する。 Portを省略するとMySQLデフォルトの3306番ポートが使用される。
Server=サーバーアドレス;Database=データベース名;Uid=ユーザー名;Pwd=パスワード;Port=ポート番号;
接続先サーバーのアドレスを指定する[編集 | ソースを編集]
- Host
- Server
- Data Source
- DataSource
- Address
- Addr
- Network Address
デフォルト値:localhost
接続先サーバーを指定する。
接続先サーバーに「localhost」が指定されており、かつUNIX上のMonoで動いている場合は、BSDソケット(TCP/IP)ではなくUNIXソケット(プロセス間通信)を使おうと試みる。
Server=サーバーアドレス;
接続先サーバーをアンパサンド(&)で区切りで複数指定すると、すべてをレプリケーションサーバー(スレーブ)として自動的に負荷分散してくれる。なおMySQLはマスター・スレーブな非同期レプリケーションが大前提であり、アンパサンドで繋ぐ書き方は複数のスレーブサーバーを列挙する書き方なので、こいつに対してINSERT/UPDATE/DELETEなどの書き込みに使ってはいけない。あくまでSELECT専用。別途マスターサーバーを指定したConnectionStringを用意しておくこと。
Server=サーバーアドレス1 & サーバーアドレス2 & サーバーアドレス3;
接続先サーバーのポート番号を指定する[編集 | ソースを編集]
- Port
デフォルト:3306
MySQLサーバーが待ち受けているポート番号を指定する。 この値は接続先がlocalhostでUNIXソケットが使える場合は無視されます。
接続プロトコルを指定する[編集 | ソースを編集]
- Protocol
- Connection Protocol
- ConnectionProtocol
デフォルト:socket
接続に使用するプロトコルを指定する。
設定できる値は以下のとおり。
- socket または tcp - BSDソケット(TCP/IP)で接続する。UNIXソケットが使えそうな場合はUNIXソケットで繋ぎに行く。
- unix - UNIXソケットで接続する。
- pipe - 名前付きパイプで接続する。
- memory - MySQL共有メモリで接続する。
初期データベースを指定する[編集 | ソースを編集]
- Initial Catalog
- Database
デフォルト:mysql
初期状態で使用するデータベース名を指定する。 MySQLのデータベース名は大文字小文字を区別するので注意すること。 接続後は「use データベース名;」というクエリーを実行することで切り替えれる。
ユーザー名を指定する[編集 | ソースを編集]
- User Id
- UserID
- Username
- Uid
- User name
- User
デフォルト:なし
接続に使用するMySQLアカウントを指定する。
パスワードを指定する[編集 | ソースを編集]
- Password
- pwd
デフォルト:なし
接続に使用するMySQLアカウントのパスワードを指定する。
通信の暗号化の有無を指定する(旧)[編集 | ソースを編集]
- Encrypt
- UseSSL
デフォルト:false
MySQL Connector/NET 5.0.3 以降で使えるようになったオプションで、それより古いバージョンでは無視される。 MySQL Connector/NET 6.2.1 以降で廃止されたので、このオプションではなくSSL Modeオプションを使えとのこと。
通信の暗号化の有無を指定する(新)[編集 | ソースを編集]
- SSL Mode
- SslMode
デフォルト:None
MySQL Connector/NET 6.2.1 以降で新設された暗号化設定。
設定できる値は以下のとおり。
- None - SSLを使用しない。
- Preferred - SSLを優先する。接続先MySQLサーバーがSSLをサポートしていない場合は自動的にSSLを使用しないで接続する。
- Required - SSLを使用する。接続先MySQLサーバーがSSLをサポートしていない場合は接続エラーとなる。オレオレ証明書を使う場合に使うのか?。
- VerifyCA - SSLを使用し、かつ認証局(CA)での検証を行う。ただし証明書の有効性のみを検証し、ホスト名の不一致を許容する。
- VerifyFull - SSLを使用し、かつ認証局(CA)での検証を行う。ホストが一致しない場合は接続エラーとなる。
接続がタイムアウトするまでの時間を指定する[編集 | ソースを編集]
- Connect Timeout
- Connection Timeout
- ConnectionTimeout
デフォルト:15
MySQLサーバーへの接続を試み、タイムアウトするまでの時間(秒数)を設定する。
コマンドがタイムアウトするまでの時間を指定する[編集 | ソースを編集]
- Default Command Timeout
- DefaultCommandTimeout
デフォルト:30
MySQL Connector/NET 5.1.4 で追加されたオプション。 MySQLサーバーとの接続が完了し、コマンド(クエリー)を発行してからここで設定した時間(秒数)が経っても応答がない場合はエラーを発生させる。あくまでデフォルト値なのでコマンド(クエリー)発行時にコマンドタイムアウト時間を明示した場合はそちらが優先される。
プリペアド・ステートメントの実行場所を指定する[編集 | ソースを編集]
- Ignore Prepare
- IgnorePrepare
デフォルト:true
プリペアド・ステートメントの構文解析をサーバー側(MySQLサーバー)で行うか、クライアント側(MySQL Connecter/NET)で行うかを設定します。falseの場合はサーバー側で行い、trueの場合はクライアント側で行います。デフォルトはtrue(クライアント側)です。
文字コードを指定する[編集 | ソースを編集]
- CharSet
- Character Set
- CharacterSet
デフォルト:なし
MySQLサーバーに送信する全てのクエリーに使用する文字コードを指定する。 結果はデータベース内の文字コード(テーブルごとに設定された文字コード)で帰ってくるので注意。
CharSet=UTF8;
MySQLを何も考えないでインストール直後の設定で運用し、デフォルトでlatin1が設定され、後々大変なことになる現場を大量に見てきたので文字コードには注意すること。MySQLで一番確実な文字コードは「Binary」(MediaWikiのデフォルト値)だが、Dapperなどから使う場合によろしくないので普通はUTF8くらいが良いかもしれない。
コネクション・プールの有無を指定する[編集 | ソースを編集]
- Pooling
デフォルト:true
コネクションプールはデフォルトで有効となっている。
コネクションプールが有効な場合は、MySqlConnectionオブジェクトを生成する際に、プールしている接続の中から適切なものが引き出され、使えそうな接続が無ければ新規に作られる。
コネクション・プールの最小値を指定する[編集 | ソースを編集]
- Minimum Pool Size
- Min Pool Size
- MinimumPoolSize
デフォルト:0
以下、Oracleと同じであれば、負荷が低いときはこの値に向かい接続を切り、無駄な接続維持をしない。また、アプリ起動直後などでこの値よりプールしている接続少ないは特に何もしないで増えるのを待つ。たとえばこの値が10に設定されていると10になるまで極力切断せずにプールし続けようとする。
ソースも見ていないし、実際に試してもいないので、実際のところ本当にそうなのかは不明。
コネクション・プールの最大数を指定する[編集 | ソースを編集]
- Maximum Pool Size
- Max Pool Size
- maximumpoolsize
デフォルト:100
Oracleと同じであれば、接続数が最大数に達している状態では新規接続ができなくなる。高負荷でサーバーが吹っ飛ぶ(応答すらしなくなる)のを防止するための設定なので大きくすればいいというものではない。
ソースも見ていないし、実際に試してもいないので、実際のところ本当にそうなのかは不明。