ผมได้สร้างตารางและตั้งใจใส่varchar
ความยาวแทน300
65353
ฉันจะแก้ไขได้อย่างไร
ตัวอย่างจะได้รับการชื่นชม
ผมได้สร้างตารางและตั้งใจใส่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);
คุณต้องแสดงชื่อคอลัมน์สองครั้งแม้ว่าคุณจะไม่ได้เปลี่ยนชื่อก็ตาม
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)
MySQL ที่สามารถทำได้ตราบใดที่ขนาดคอลัมน์นั้นรวมกับคอลัมน์อื่น ๆ ในตารางไม่เกิน 65535
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