2016/05/07
phpMyAdmin がおかしい
-
-
先日に引き続き、phpMyAdmin の挙動におかしなところを見つけた。(phpMyAdmin 4.6.0)
具体的には、テーブルのコメントに NULL が入っているとテーブルを SQL エクスポートする際におかしな CREATE 文を生成するのだ。
例えば、members テーブルに DATE 型フィールド birthday があり、デフォルト値が NULL だとする。これをフィールドのコメントとして「誕生日 (省略時は NULL)」のように記入してあると、SQL エクスポートを実行した際に以下のような CREATE 文を出力する。
01 | CREATE TABLE `members` ( |
02 | `id` int (11) NOT NULL COMMENT '会員ID' , |
03 | `status` int (11) NOT NULL DEFAULT '1' COMMENT '会員状態 (0: 無効; 1: 有効) サイト管理者が変更' , |
04 | `picture_file_name` varchar (64) NOT NULL COMMENT '会員アバター画像ファイル名' , |
05 | `name_family` varchar (32) NOT NULL COMMENT '姓 ※必須' , |
06 | `name_given` varchar (32) NOT NULL COMMENT '名 ※必須' , |
07 | `kana_family` varchar (32) NOT NULL COMMENT '姓 (カナ) ※必須' , |
08 | `kana_given` varchar (32) NOT NULL COMMENT '名 (カナ) ※必須' , |
09 | `nickname` varchar (32) NOT NULL COMMENT 'ニックネーム (省略時は空文字列)' , |
10 | `birthday` date DEFAULT NULL COMMENT AS `誕生日 (省略時は NULL )`, |
11 | `pref_id` int (11) NOT NULL COMMENT '都道府県ID' , |
12 | `city_id` int (11) NOT NULL COMMENT '市区町村ID' , |
13 | `address` varchar (32) NOT NULL COMMENT '町域以下の住所' , |
14 | `building` varchar (32) NOT NULL COMMENT '建物名称、部屋番号など' , |
15 | `self_introduction` text NOT NULL COMMENT '自己紹介文 (平文、改行有効) ※必須' , |
16 | `email` varchar (64) NOT NULL COMMENT 'メールアドレス ※必須' , |
17 | ` password ` varchar (64) NOT NULL COMMENT 'SHA-256エンコードしたパスワード文字列 ※必須' , |
18 | `master_status` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'マスターステータス (0: 無効; 1: 有効) 既定値は 1' , |
19 | `verification_status` smallint (6) NOT NULL DEFAULT '0' COMMENT |
上記の10行目を見てみると、コメント部分が COMMENT '...' ではなく COMMENT AS `...` になっている。このため、この CREATE 文を実行しようとすると構文エラーとなってしまう。
どうもこのところ phpMyAdmin でトラブルが起きることが多い。MariaDB との協調動作に問題があるのだろうか。