テーブルを作成しましたが、誤ってvarchar
length を300
ではなくas にし65353
ました。どうすれば修正できますか?
例をいただければ幸いです。
テーブルを作成しましたが、誤ってvarchar
length を300
ではなくas にし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)
VARCHAR(65353)
テーブル内の他の列と合計した列サイズが 65535 を超えない限り、MySQLで実行できる元の質問を読み間違えました。
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