このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
mariadb:10.4:system-variables [2019/10/23 13:00] tanaka [文字セット関連のシステム変数] |
mariadb:10.4:system-variables [2020/11/20 09:58] y2sunlight |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > **本編は投稿中です。しばらくお待ち下さい。** | + | ====== MariaDB10.4 システム変数の参照と変更 ====== |
+ | phpMyAdmin 4.9.0.1 (MariaDB 10.4.6) | ||
- | ---- | ||
- | |||
- | ====== MariaDB10.4 システム変数の参照と変更 ====== | ||
--- // | --- // | ||
行 9: | 行 7: | ||
関連記事 | 関連記事 | ||
- | * [[xampp: | ||
* [[mariadb: | * [[mariadb: | ||
* [[mariadb: | * [[mariadb: | ||
行 15: | 行 12: | ||
* [[mariadb: | * [[mariadb: | ||
* [[mariadb: | * [[mariadb: | ||
+ | |||
+ | 以下「MySQL」は「MariaDB」に読み替えて下さい。 | ||
---- | ---- | ||
+ | |||
+ | ===== 概要 ===== | ||
MySQLサーバには多くのシステム変数があります。システム変数にはデフォルト値が存在しますが、サーバ起動時のコマンドラインオプションや、オプションファイル(my.ini)で設定する事ができます。また、多くのシステム変数はSET文で変更する事ができます。 | MySQLサーバには多くのシステム変数があります。システム変数にはデフォルト値が存在しますが、サーバ起動時のコマンドラインオプションや、オプションファイル(my.ini)で設定する事ができます。また、多くのシステム変数はSET文で変更する事ができます。 | ||
行 22: | 行 23: | ||
MySQL 4.0.3から、MySQLサーバは2種類のシステム変数(グローバル変数とセッション変数)を保持するようになりました。グローバル変数はサーバ起動時に設定される変数で、SET GLOBAL 文によって変更できます。但し、変更するにはSUPER権限が必要になります。一方、セッション変数は各接続に対して保持される変数で、接続時にグローバル変数によって初期化されます。セッション変数の変更はSET SESSION 文によって変更できます。変更に当たっては特別な権限は必要としませんが、変更できるのは自分のセッション変数だけです。 | MySQL 4.0.3から、MySQLサーバは2種類のシステム変数(グローバル変数とセッション変数)を保持するようになりました。グローバル変数はサーバ起動時に設定される変数で、SET GLOBAL 文によって変更できます。但し、変更するにはSUPER権限が必要になります。一方、セッション変数は各接続に対して保持される変数で、接続時にグローバル変数によって初期化されます。セッション変数の変更はSET SESSION 文によって変更できます。変更に当たっては特別な権限は必要としませんが、変更できるのは自分のセッション変数だけです。 | ||
- | ==== システム変数 version ==== | + | \\ |
+ | |||
+ | ===== システム変数 version | ||
システム変数versionを参照します。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | システム変数versionを参照します。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | ||
行 35: | 行 38: | ||
</ | </ | ||
- | 実行結果 | + | === 実行結果 |
[{{: | [{{: | ||
行 53: | 行 56: | ||
最初の構文(SHOW VARIABLES)はMySQL独自のもので、次の構文は(select @@)は他のデータベースとの互換性を保持する為にサポートされています。 | 最初の構文(SHOW VARIABLES)はMySQL独自のもので、次の構文は(select @@)は他のデータベースとの互換性を保持する為にサポートされています。 | ||
- | ==== システム変数 storage_engine ==== | ||
- | システム変数storage_engineを変更してみます。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | + | \\ |
+ | |||
+ | ===== システム変数 storage_engine ===== | ||
+ | |||
+ | インストールしたMySQLに搭載されているデータベースエンジンを確認してみます。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | ||
+ | |||
+ | < | ||
+ | http:// | ||
+ | </ | ||
+ | |||
+ | <file sql svinfo1.sql> | ||
+ | SHOW ENGINES; | ||
+ | </ | ||
+ | |||
+ | === 実行結果 === | ||
+ | |||
+ | [{{: | ||
+ | |||
+ | 実行結果から分かるようにInnoDBがデフォルトエンジンとして使用されています。 | ||
+ | |||
+ | 次に、システム変数storage_engineを変更してみます。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | ||
< | < | ||
行 62: | 行 84: | ||
<file sql syaval2.sql> | <file sql syaval2.sql> | ||
- | SET storage_engine=MyISAM; | + | SET storage_engine=Aria; |
SHOW SESSION VARIABLES LIKE ' | SHOW SESSION VARIABLES LIKE ' | ||
SHOW GLOBAL VARIABLES LIKE ' | SHOW GLOBAL VARIABLES LIKE ' | ||
行 68: | 行 90: | ||
</ | </ | ||
- | ここでは、データベースエンジンをデフォルトのInnoDBからAriaに変更します。AriaはMyISAMの耐障害性やキャッシュ機構などを改善した、モダンなデータベースエンジンで、もともとの名前は**Maria**だった。 | + | ここでは、データベースエンジンをデフォルトのInnoDBからAriaに変更します。AriaはMyISAMの耐障害性やキャッシュ機構などを改善した、モダンなデータベースエンジンで、もともとの名前は**Maria**でした!。 |
- | 実行結果 | + | === 実行結果 |
[{{: | [{{: | ||
行 77: | 行 98: | ||
システム変数storage_engineはCREATE TABLEで使用されるデフォルトのテーブルタイプです。 | システム変数storage_engineはCREATE TABLEで使用されるデフォルトのテーブルタイプです。 | ||
- | この例では、セッション変数storage_engineをSET文でMyISAMに変更しています。実行結果を見ても分かるようにセッション変数の変更はグローバル変数には影響しません。SETまたはSHOW文で SESSION/ | + | この例では、セッション変数storage_engineをSET文でAriaに変更しています。実行結果を見ても分かるようにセッション変数の変更はグローバル変数には影響しません。SETまたはSHOW文で SESSION/ |
- | ==== 文字セット関連のシステム変数 ==== | + | \\ |
+ | |||
+ | ===== 文字セット関連のシステム変数 | ||
文字セット関連のシステム変数を取得してみます。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | 文字セット関連のシステム変数を取得してみます。ブラウザからサンプルプログラム(sqlfile.php)を実行します。 | ||
行 88: | 行 111: | ||
<file sql syaval3.sql> | <file sql syaval3.sql> | ||
- | SHOW GLOBAL VARIABLES LIKE 'character\_set\_%'; | + | SHOW GLOBAL VARIABLES LIKE 'character_set_%'; |
- | SHOW SESSION VARIABLES LIKE 'character\_set\_%'; | + | SHOW SESSION VARIABLES LIKE 'character_set_%'; |
</ | </ | ||
- | 実行結果 | + | === 実行結果 |
[{{: | [{{: | ||
行 100: | 行 123: | ||
本例では上記実行結果のようになりました。暗黙の文字セットとなるcharacter_set_serverがlatin1になっています。これをutf8に変更するには、my.iniを以下のように変更します。 | 本例では上記実行結果のようになりました。暗黙の文字セットとなるcharacter_set_serverがlatin1になっています。これをutf8に変更するには、my.iniを以下のように変更します。 | ||
- | {XAMPP Install Folder}/ | + | {{fa> |
- | < | + | < |
+ | [mysqld] | ||
character_set_server=utf8 | character_set_server=utf8 | ||
</ | </ | ||
行 107: | 行 131: | ||
また、上記実行結果では、クライアントとの接続に関係する3つのセッション変数(character_set_client, | また、上記実行結果では、クライアントとの接続に関係する3つのセッション変数(character_set_client, | ||
- | 漢字を使用するためには、上で説明したようにmy.iniを編集するか、セッションの初めに | + | 漢字を使用するためには、上で説明したようにmy.iniを編集するか、セッションの初めに |
+ | |||
+ | === クライアント文字セットをUTF8に設定する === | ||
- | クライアント文字セットをUTF8に設定する | ||
< | < | ||
set names utf8; | set names utf8; | ||
- | < | + | </code> |
- | 本サンプルプログラムでは、sオプションを使用することでデータベースセッションの初めに < | + | 本サンプルプログラムでは、sオプションを使用することでデータベースセッションの初めに |
< | < | ||
行 120: | 行 145: | ||
</ | </ | ||
- | nowiki> | + | [{{: |
+ | |||
+ | <nowiki> | ||
| character_set_client | クライアントの使用する文字セットです。サーバへのSQL文はこの文字セットで送信します。 | | | character_set_client | クライアントの使用する文字セットです。サーバへのSQL文はこの文字セットで送信します。 | | ||
行 130: | 行 157: | ||
- | データベースの文字セット | + | === データベースの文字セット |
データベースの文字セットはデータベースの作成時に決まります。この場合の暗黙の文字セットはサーバの文字セット(character_set_server)です。これを変更するにはCREATE DATABASE文で明示的に指定します: | データベースの文字セットはデータベースの作成時に決まります。この場合の暗黙の文字セットはサーバの文字セット(character_set_server)です。これを変更するにはCREATE DATABASE文で明示的に指定します: | ||
行 149: | 行 176: | ||
</ | </ | ||
- | 文字セットはサーバ、データベース、テーブル、カラムと順に引き継がれます。明示的の指定しない場合は、1つ前のレベルの文字セットが使用されます。 | + | 文字セットはサーバ、データベース、テーブル、カラムと順に引き継がれます。明示的に指定しない場合は、1つ前のレベルの文字セットが使用されます。 |
+ | \\ | ||