今天遇到了 Data truncation: Data too long for column 'response' at row 1 。表的字段不够长。所以就修改了表结构。然后就尽量开始扩充表结构。就遇到了Column length too big for column 'remark' (max=65535)这个问题。
主要原因是MYSQL的限制
(1)单个字段如果大于65535,则转换为TEXT 。
(2)单行最大限制为65535,这里不包括TEXT、BLOB。
latin1字符集1个字母占据1个字节。
gbk字符集1个汉字占据2个字节
utf8字符集1个汉字占据3个字节
然后当我把字段改成text时,又报了The used table type doesn't support BLOB/TEXT columns。存储引擎不支持TEXT
然后把存储引擎由MEMORY改成MyISAM就可以了
这里我比较了下三种存储引擎
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。不支持TEXT、BLOB等大字节存储。