Я использую тип данных TEXT в MySQL. Но когда я проверяю столбец, я вижу только fndjdjjj jdjejcdjj sekifkj sjkedkjfj sjekkcjej jwj.... Предполагается, что после jwj будет еще один текст, но я получаю ... Почему это произошло? Я думал, у ТЕКСТА может быть неограниченный размер?

Я использую android и подключаюсь к MySQL PHP.

0
John 18 Фев 2016 в 09:42

2 ответа

Лучший ответ

Используйте 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
Rakesh 18 Фев 2016 в 06:47

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 связано с изменением наборов символов.

При вставке чего-либо размером более нескольких МБ у вас могут возникнуть проблемы с размером пакета или другими настройками.

1
Rick James 18 Фев 2016 в 21:41