バージョン4と5のvarcharの違い
MySQLバージョン4.0と5.0 で varchar の扱いが変わっているようだ。
バージョン4では varchar(n) は nバイトの領域を確保だったのが、
バージョン5では n文字分を格納可能になっている。
4.1は動作環境を作れなかったため未確認だが、4.1.1で変わったと思われる。
バージョンアップ時には(特にクライアントでvarcharのサイズにあわせて領域確保している場合は)要注意。
以下のSQLで確認できる。
create table varchartest (name varchar(6)); insert into varchartest values ("あいう"); insert into varchartest values ("あいうえおか"); insert into varchartest values ("あいうえおかきく");
実行結果:
select * from varchartest;
4.0
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
name |
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
あいう |
あいう |
あいう |
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
5.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
name |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
あいう |
あいうえおか |
あいうえおか |
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
-
-
-
-
-
-
-
-
-
Windows2000上で、mysqlクライアントはそれぞれのバージョンのものを使用して確認。