MySQL 5.1 を使用する CentOS 6.4 で、次のコードを使用して MySQL にテーブルを作成しました。
CREATE TABLE test (
t1 int(10) NOT NULL,
t2 varchar(12) NOT NULL,
PRIMARY KEY (t1),
UNIQUE KEY t2 (t2)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ただし、クエリが正常に実行された後。の出力desc test
は
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| t1 | int(10) | NO | PRI | NULL | |
| t2 | varchar(12) | NO | UNI | NULL | |
+-------+-------------+------+-----+---------+-------+
ではなく と表示DEFAULT
されています。NULL
NOT NULL
しかし、結果は同じです。
この後、挿入する場合
INSERT INTO test VALUES ()
挿入は成功しましたが、NULL 値を指定し、t1 の値が 0 であるため、そうすべきではありません。値が NULL であるため、挿入は失敗するはずです。
後続の挿入では、重複するキー句が原因でエラーが発生します。どこが間違っているのか教えてください。
Ubuntu 13.04 上の MySQL 5.5 を搭載した別のマシンでこれを試しました。
| Variable_name | Value |
+-------------------------+-------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-0ubuntu0.13.04.1 |
| version_comment | (Ubuntu) |
| version_compile_machine | x86_64 |
| version_compile_os | debian-linux-gnu |
+-------------------------+-------------------------+