我在TEXT
中使用MySQL
数据类型。但是当我检查专栏时,我只看到fndjdjjj jdjejcdjj sekifkj sjkedkjfj sjekkcjej jwj...
。在jwj之后,它假设有另一个文本,但我明白...为什么会发生这种情况?我以为TEXT可以有无限大小?
我正在使用android,并与MySQL PHP连接。
答案 0 :(得分:1)
使用LONGTEXT。
以下是限制
Type | Maximum length -----------+------------------------------------- TINYTEXT | 255 (2 8−1) bytes TEXT | 65,535 (216−1) bytes = 64 KiB MEDIUMTEXT | 16,777,215 (224−1) bytes = 16 MiB LONGTEXT | 4,294,967,295 (232−1) bytes = 4 GiB
答案 1 :(得分:1)
TINYTEXT
限制为255个字节。请注意插入期间的截断。请注意,ALTER
后数据完好无损。请注意,我使用的是MODIFY
,而不是CONVERT TO
。
mysql> CREATE TABLE so35474581 ( t TINYTEXT CHARACTER SET latin1 );
Query OK, 0 rows affected (0.24 sec)
mysql> INSERT INTO so35474581 (t) SELECT repeat('x', 444);
Query OK, 1 row affected, 1 warning (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 1
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------+
| Warning | 1265 | Data truncated for column 't' at row 1 |
+---------+------+----------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT LENGTH(t), CHAR_LENGTH(t) FROM so35474581;
+-----------+----------------+
| LENGTH(t) | CHAR_LENGTH(t) |
+-----------+----------------+
| 255 | 255 |
+-----------+----------------+
1 row in set (0.00 sec)
mysql> ALTER TABLE so35474581 MODIFY t LONGTEXT CHARACTER SET latin1;
Query OK, 1 row affected (0.31 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT LENGTH(t), CHAR_LENGTH(t) FROM so35474581;
+-----------+----------------+
| LENGTH(t) | CHAR_LENGTH(t) |
+-----------+----------------+
| 255 | 255 |
+-----------+----------------+
1 row in set (0.00 sec)
提到的CONVERT TO
与更改字符集有关。
当插入超过几MB的任何内容时,您可能无法使用packet_size或其他设置。