SQL 最大长度 LONGTEXT

SQL max size LONGTEXT

我创建了这个 table:

CREATE TABLE Hospital_MedicalRecord(
  recNo CHAR(5),
  patient CHAR(9),
  doctor CHAR(9),
  enteredOn DATETIME NOT NULL,
  diagnosis LONGTEXT NOT NULL,
  treatment TEXT(1000),
  PRIMARY KEY (recNo, patient),
  CONSTRAINT FK_patient FOREIGN KEY (patient) REFERENCES Hospital_Patient(NINumber),
  CONSTRAINT FK_doctor FOREIGN KEY (doctor) REFERENCES Hospital_Doctor(NINumber)
  ON DELETE CASCADE
);

如何使 diagnosis 包含一些长文本但不超过 2^24 字节?我调查了 LONGTEXT 但我找不到限制它的方法,因为我相信它可以达到 2^34?

使用MEDIUMTEXT.

https://dev.mysql.com/doc/refman/8.0/en/string-type-overview.html

MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

A TEXT column with a maximum length of 16,777,215 (224 − 1) characters. The effective maximum length is less if the value contains multibyte characters. Each MEDIUMTEXT value is stored using a 3-byte length prefix that indicates the number of bytes in the value.

措辞有点奇怪。长度限制实际上是字节数,而不是字符数。

LONGTEXT 被限制为文件系统允许的最大 32 位系统它被限制为 2^32 即大约 4.000.000.000 个字符(如果你不使用多字节字符),我没有计算正是。
然后你有 2^24 个字符的 MEDIUMTEXT .. 大约 16.000.000 个字符。 TEXT 有 2^16 个字符的限制,这个限制要小得多,大约 64.000 个字符(如果你没有多字节)。 你需要的是 MEDIUMTEXT