it-swarm.com.de

Maximale Länge für MySQL-Text

Ich erstelle ein Formular zum Senden privater Nachrichten und möchte den maxlength -Wert eines Textbereichs festlegen, der der maximalen Länge eines text -Felds in meiner MySQL-Datenbanktabelle entspricht. Wie viele Zeichen kann ein Textfeld speichern?

Wenn viel, könnte ich die Länge im Feld für den Datenbanktext wie bei varchar angeben?

391
CyberJunkie

Siehe maximale Anzahl: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

TINYBLOB, TINYTEXT       L + 1 bytes, where L < 2^8    (255 Bytes)
BLOB, TEXT               L + 2 bytes, where L < 2^16   (64 Kilobytes)
MEDIUMBLOB, MEDIUMTEXT   L + 3 bytes, where L < 2^24   (16 Megabytes)
LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gigabytes)

L ist die Anzahl der Bytes in Ihrem Textfeld. Die maximale Anzahl von Zeichen für Text ist 216-1 (mit Einzelbytezeichen). Bedeutet 65.535 Zeichen (mit Einzelbyte-Zeichen).

UTF-8/MultiByte-Codierung : Bei Verwendung der MultiByte-Codierung kann jedes Zeichen mehr als 1 Byte Platz beanspruchen. Für UTF-8 liegt der Speicherverbrauch zwischen 1 und 4 Byte pro Zeichen.

696
fyr

TINYTEXT: 256 Bytes
TEXT: 65.535 Bytes
MEDIUMTEXT: 16.777.215 Byte
LONGTEXT: 4.294.967.295 Byte

120
Cristian Oana
Type       | Approx. Length     | Exact Max. Length Allowed
-----------------------------------------------------------
TINYTEXT   | 256 Bytes          |           255 characters
TEXT       |  64 Kilobytes      |        65,535 characters
MEDIUMTEXT |  16 Megabytes      |    16,777,215 characters
LONGTEXT   |   4 Gigabytes      | 4,294,967,295 characters

Hinweis: Wenn Sie Multibyte-Zeichen verwenden (z. B. arabische Buchstaben, bei denen jedes Zeichen 2 Byte lang ist), hat die Spalte "Genaue maximale Länge zulässig" eine andere Länge. Beispiel: Wenn Sie 2-Byte-Zeichen verwenden, beträgt die genaue maximale Länge für TINYTEXT 127 Zeichen. Grundsätzlich ist die Anzahl der zulässigen Bytes -1.

65
evilReiko

Gemäß http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html ist das Limit L + 2 bytes, where L < 2^16 oder 64k.

Sie sollten sich nicht darum kümmern müssen, es einzuschränken. Es wird automatisch in Blöcke aufgeteilt, die hinzugefügt werden, wenn die Zeichenfolge wächst, sodass 64 KB nicht immer blind verwendet werden.

19
Blindy

Wie viele Zeichen kann ein Textfeld speichern?

Laut Dokumentation Sie können maximal 21.844 Zeichen verwenden, wenn der Zeichensatz UTF8 ist

Wenn viel, wäre ich in der Lage, Länge im Feld DB-Texttyp anzugeben, wie ich es mit varchar tun würde?

Sie müssen die Länge nicht angeben. Wenn Sie mehr Zeichen benötigen, verwenden Sie die Datentypen MEDIUMTEXT oder LONGTEXT. Bei VARCHAR gilt die Angabe der Länge nicht für die Speicheranforderung, sondern nur für das Abrufen der Daten aus der Datenbank.

8
SCC
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB

TINYTEXT ist ein String-Datentyp, der bis zu 255 Zeichen speichern kann.

TEXT ist ein String-Datentyp, der bis zu 65,535 Zeichen speichern kann. TEXT wird häufig für kurze Artikel verwendet.

LONGTEXT ist ein String-Datentyp mit einer maximalen Länge von 4,294,967,295 Zeichen. Verwenden Sie LONGTEXT, wenn Sie großen Text speichern müssen, z. B. ein Kapitel eines Romans.

7
Sachith

Für die MySQL-Version 8.0.

Speicheranforderungen für numerische Typen

Data Type       Storage Required
TINYINT         1 byte
SMALLINT        2 bytes
MEDIUMINT       3 bytes
INT, INTEGER    4 bytes
BIGINT          8 bytes
FLOAT(p)        4 bytes if 0 <= p <= 24, 8 bytes if 25 <= p <= 53
FLOAT           4 bytes
DOUBLE, REAL    8 bytes
DECIMAL(M,D), NUMERIC(M,D)  Varies; see following discussion
BIT(M)  approximately (M+7)/8 bytes

Werte für DECIMAL- (und NUMERIC-) Spalten werden in einem Binärformat dargestellt, das neun Dezimalstellen (Basis 10) in vier Bytes packt. Die Speicherung für den ganzzahligen und den gebrochenen Teil jedes Werts wird separat bestimmt. Jedes Vielfache von neun Stellen erfordert vier Bytes, und die "verbleibenden" Stellen erfordern einen Bruchteil von vier Bytes. Der für überschüssige Ziffern erforderliche Speicher ist in der folgenden Tabelle aufgeführt.

Speicheranforderungen für Datums- und Zeittypen Für die Spalten TIME, DATETIME und TIMESTAMP unterscheidet sich der Speicherbedarf für Tabellen, die vor MySQL 5.6.4 erstellt wurden, von den Tabellen, die ab 5.6.4 erstellt wurden. Dies ist auf eine Änderung in 5.6.4 zurückzuführen, die es diesen Typen ermöglicht, einen Bruchteil zu haben, der 0 bis 3 Bytes erfordert.

Data Type   Storage Required Before MySQL 5.6.4   Storage Required as of MySQL 5.6.4
YEAR        1 byte                                1 byte
DATE        3 bytes                               3 bytes
TIME        3 bytes                               3 bytes + fractional seconds storage
DATETIME    8 bytes                               5 bytes + fractional seconds storage
TIMESTAMP   4 bytes                               4 bytes + fractional seconds storage

Ab MySQL 5.6.4 bleibt der Speicher für YEAR und DATE unverändert. TIME, DATETIME und TIMESTAMP werden jedoch unterschiedlich dargestellt. DATETIME ist effizienter gepackt und benötigt 5 statt 8 Bytes für den nicht fraktionellen Teil. Alle drei Teile haben einen Bruchteil, der 0 bis 3 Bytes erfordert, abhängig von der Genauigkeit der gespeicherten Werte in Bruchteilen von Sekunden.

Fractional Seconds Precision    Storage Required
0                               0 bytes
1, 2                            1 byte
3, 4                            2 bytes
5, 6                            3 bytes

Beispielsweise verwenden TIME (0), TIME (2), TIME (4) und TIME (6) jeweils 3, 4, 5 und 6 Bytes. TIME und TIME (0) sind äquivalent und erfordern denselben Speicher.

Ausführliche Informationen zur internen Darstellung von Zeitwerten finden Sie unter MySQL-Interna: Wichtige Algorithmen und Strukturen.

Speicheranforderungen für Zeichenfolgentypen In der folgenden Tabelle gibt M die deklarierte Spaltenlänge in Zeichen für nichtbinäre Zeichenfolgentypen und Bytes für binäre Zeichenfolgentypen an. L steht für die tatsächliche Länge eines bestimmten Zeichenfolgenwerts in Byte.

Data Type                    Storage Required
CHAR(M)                      The compact family of InnoDB row formats optimize storage for variable-length character sets. See COMPACT Row Format Characteristics. Otherwise, M × w bytes, <= M <= 255, where w is the number of bytes required for the maximum-length character in the character set.
BINARY(M)                    M bytes, 0 <= M <= 255
VARCHAR(M), VARBINARY(M)     L + 1 bytes if column values require 0 − 255 bytes, L + 2 bytes if values may require more than 255 bytes
TINYBLOB, TINYTEXT           L + 1 bytes, where L < 28
BLOB, TEXT                   L + 2 bytes, where L < 216
MEDIUMBLOB, MEDIUMTEXT       L + 3 bytes, where L < 224
LONGBLOB, LONGTEXT           L + 4 bytes, where L < 232
ENUM('value1','value2',...)  1 or 2 bytes, depending on the number of enumeration values (65,535 values maximum)
SET('value1','value2',...)   1, 2, 3, 4, or 8 bytes, depending on the number of set members (64 members maximum)
1
Rohit.007

TEXT ist ein String-Datentyp, der bis zu 65.535 Zeichen speichern kann. Wenn Sie jedoch weitere Daten speichern möchten, ändern Sie den Datentyp in LONGTEXT.

ALTER TABLE name_tabel CHANGE text_field LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

1
sohel shaikh