将表从latin1转换为UTF-8,键太大问题

| 我正在尝试将我的一些数据库表从latin1字符集转换为utf-8。许多表都可以很好地转换,但是有些表会返回此错误: 将表xyz转换为CHARACTER SET utf8; 错误1118(42000):行大小太大。使用的表类型的最大行大小(不计BLOB)为65535。您必须将某些列更改为TEXT或BLOB 有没有解决的办法?为了在没有问题的情况下进行转换,我应该在表格中使用的最小长度列大小是多少?而且,如何在不破坏表中数据的情况下更改需要更改的列? 顺便说一下,这是桌子。
mysql> describe trailheads;
+-----------------------+----------------+------+-----+---------+----------------+
| Field                 | Type           | Null | Key | Default | Extra          |
+-----------------------+----------------+------+-----+---------+----------------+
| trailhead_id          | int(10)        | NO   | PRI | NULL    | auto_increment |
| trail_id              | int(10)        | YES  |     | NULL    |                |
| park_id               | int(10)        | YES  |     | NULL    |                |
| editor_member_id      | int(10)        | NO   |     | NULL    |                |
| trailhead_name        | varchar(1000)  | NO   |     | NULL    |                |
| trailhead_description | varchar(20000) | YES  |     | NULL    |                |
| parking               | tinyint(1)     | YES  |     | NULL    |                |
| parking_spots         | int(5)         | YES  |     | NULL    |                |
| is_free               | tinyint(1)     | YES  |     | NULL    |                |
| cost_details          | varchar(5000)  | YES  |     | NULL    |                |
| lat                   | float(9,6)     | NO   |     | NULL    |                |
| lng                   | float(9,6)     | NO   |     | NULL    |                |
| bathrooms_nearby      | tinyint(1)     | YES  |     | NULL    |                |
| wheelchair_accessible | tinyint(1)     | YES  |     | NULL    |                |
| date_added            | date           | NO   |     | NULL    |                |
| last_edit_date        | date           | YES  |     | NULL    |                |
+-----------------------+----------------+------+-----+---------+----------------+
    
已邀请:
问题可能出在“ 1”字段。 在较新的mySQL版本中,“ 2”字段长度表示最大字符数,而不是字节。 由于UTF-8字符的长度最多为四个字节,所以20,000个字符
VARCHAR
可能会占用80,000个字节-显然超出了最大限制。 将该列更改为“ 4”应该有效。     

要回复问题请先登录注册