313

テーブルを作成しましたが、誤ってvarcharlength を300ではなくas にし65353ました。どうすれば修正できますか?

例をいただければ幸いです。

4

2 に答える 2

594

これを試しましたか?

ALTER TABLE <table_name> MODIFY <col_name> VARCHAR(65353);

これにより、col_nameのタイプが次のように変更されますVARCHAR(65353)

于 2009-08-14T19:01:46.710 に答える
26
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
于 2009-08-14T19:04:16.847 に答える