TEXT 数据类型是否会限制长度?
Does TEXT datatype will limit the length ?
我在 MySQL
中使用 TEXT
数据类型。但是当我检查该列时,我只看到 fndjdjjj jdjejcdjj sekifkj sjkedkjfj sjekkcjej jwj...
。在 jwj 之后,它应该有另一个文本,但我明白了......为什么会这样?我以为 TEXT 可以有无限大小?
我正在使用 android 并连接 MySQL PHP。
使用 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
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 或其他设置的问题。
我在 MySQL
中使用 TEXT
数据类型。但是当我检查该列时,我只看到 fndjdjjj jdjejcdjj sekifkj sjkedkjfj sjekkcjej jwj...
。在 jwj 之后,它应该有另一个文本,但我明白了......为什么会这样?我以为 TEXT 可以有无限大小?
我正在使用 android 并连接 MySQL PHP。
使用 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
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 或其他设置的问题。