ぷっぽプログラミング備忘録

linux, javascript, php, C#, そのうちScalaとかアプリ開発とかやってみたいです。

MySQLのALTER TABLEで既存カラムVARCHARの文字数は減らせないことがある

知らなかったです。

 

tbl_user.user_nameがVARCHAR(500)とかで、

「田中太郎衛門」(VARCHAR(10)は越えてるデータ)

などというデータが既にテーブルに入っていた場合、

 

 ALTER TABLE tbl_user  MODIFY user_name VARCHAR(4); 

 

などとして、

既にカラムに入っているサイズより小さくしようとしても、

エラー出るんですね!

 SQLSTATE[01000]: Warning: 1265 Data truncated for column 'XXXXX' at row 1

「田中太郎衛門」(VARCHAR(10))     VARCHAR(4)

なので。

ネット情報では、切り捨てられるとか書いてるページあったけど、

バージョンによってはエラーになるんですな。時間とられた。つかれた。

 

 

ただし、

カラムに入っているサイズより大きい場合、

たとえばVARCHAR(300)ぐらいに縮める場合

 ALTER TABLE tbl_user  MODIFY user_name VARCHAR(300); 

はうまくいきます。

「田中太郎衛門」(VARCHAR(10))     VARCHAR(300)

なので。