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 或其他设置的问题。