テーブルを作成し、誤ってvarchar
の長さを300
ではなく65353
にしました。どうすれば修正できますか?
一例をいただければ幸いです。
これを試しましたか?
ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);
これはcol_nameの型をVARCHAR(65353)
に変更します。
ALTER TABLE <tablename> CHANGE COLUMN <colname> <colname> VARCHAR(65536);
列名を変更しない場合でも、列名を2回リストする必要があります。
この変更を加えると、列のデータ型はMEDIUMTEXT
になります。
Miky Dは正しいです、MODIFY
コマンドはこれをより簡潔にすることができます。
MEDIUMTEXT
について:MySQLの行は65535バイトしか使えません(BLOB/TEXTカラムを数えません)。列を大きすぎて行の合計サイズを65536以上に変更しようとすると、エラーが発生する可能性があります。 VARCHAR(65536)
の列を宣言しようとすると、その列の唯一の列であっても大きすぎるため、MySQLは自動的にそれをMEDIUMTEXT
データ型に変換します。
mysql> create table foo (str varchar(300));
mysql> alter table foo modify str varchar(65536);
mysql> show create table foo;
CREATE TABLE `foo` (
`str` mediumtext
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
私はあなたの元々の質問を誤解しました。テーブルの他のカラムと合計されたカラムサイズが65535を超えない限り、MySQLができるVARCHAR(65353)
が欲しいです。
mysql> create table foo (str1 varchar(300), str2 varchar(300));
mysql> alter table foo modify str2 varchar(65353);
ERROR 1118 (42000): Row size too large.
The maximum row size for the used table type, not counting BLOBs, is 65535.
You have to change some columns to TEXT or BLOBs