TEXT数据类型是否会限制长度?

时间:2016-02-18 06:42:39

标签: android mysql text sqldatatypes

我在TEXT中使用MySQL数据类型。但是当我检查专栏时,我只看到fndjdjjj jdjejcdjj sekifkj sjkedkjfj sjekkcjej jwj...。在jwj之后,它假设有另一个文本,但我明白...为什么会发生这种情况?我以为TEXT可以有无限大小?

我正在使用android,并与MySQL PHP连接。

2 个答案:

答案 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或其他设置。