マニュアル: MySQL

投稿日: 更新日:

設定

サーバの状態を出力

  • show processlist;

いろいろ

  • データベース一覧を出力: show databases;
  • 変数を出力: show variables;
    • 絞る時はlikeを使用する。例: show variables like %char%;
  • テーブル一覧を出力: show tables;
  • テーブル定義を出力: show create table テーブル名;

最後のセミコロンの代わりに \G で終わることで、縦長に表示します。

TIMESTAMPとDATETIMEの違い

  • TIMESTAMP = Unix Time
  • DATETIME = 独自

DATETIMEは'0000-00-00’を許容するなど怪しいが、2038年以降のことを考えると、通常はDATETIMEの方がいいかも。

区切りはハイフンとアンダースコアどちらでも構わない

MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.2.8 プログラム変数の設定へのオプションの使用より、

お好みで、変数名内の下線をダッシュとして指定できます。

変数設定

  • 表示用SQL: show variables like '変数名'
変数 設定内容
character_set_client クライアントから到達するステートメントの文字コード
character_set_connection サーバが処理するための文字コード(らしい)
character_set_database データベースの文字コード
character_set_filesystem ファイルシステムの文字コード(要するにファイル名ですね)
character_set_results 結果をクライアントに返すための文字コード
character_set_server サーバのデフォルト文字コード
max_connections 最大接続数
innodb_lock_wait_timeout 行ロックが解除されるまでトランザクションが待機する時間の長さ(秒)

結局UTF-8を使うにはどうすればいいのか?

パラメータが多すぎて分かりません。 ネットで検索しても微妙に書いてあることが違うので。

ただ、ヒントとなる設定は以下の公式サイトのFAQにあります。

確認手順として、以下の文が書かれています。

SHOW VARIABLES LIKE 'char%';

あと、最後に以下の記述例があります。 big5になっていますが、これをutf8にしても問題なさそうです。

[mysqld]
character-set-server=big5
[client]
default-character-set=big5

あと、collation-server = utf8_general_ci あたりもあると良さそうです。 ソースは、MariaDB 5.5のDockerのサンプルにあったからです。

最近はutf8よりは、utf8mb4の方が良さそうです。

参考: MySQLの文字コード事情

Collation

個人的にはutf8_binまたはutf8mb4_binがいいと思います。

理由は「大文字小文字を区別しない」のが必要な場合は少なく、むしろバグの元になるからです。

公式サイト

外部サイト

逆引きマニュアル