MySQL 语句中的未知语法错误

Unknown syntax error in MySQL statement

我正在使用下面的 CREATE TABLE 语句

CREATE TABLE IF NOT EXISTS users (
`uuid` varchar(36) NOT NULL,
`json` varchar(MAX) NOT NULL,
PRIMARY KEY (`uuid`)
);

但是我一直收到这个错误。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX) NOT NULL, PRIMARY KEY (uuid) )' at line 3

对我来说毫无意义。

此用途不支持MAX,保留给MAX功能使用。请改用等效数字,检查一下:Equivalent of varchar(max) in MySQL?

这对你有用。 MAX 是保留关键字。指定 varchar 的确切数量而不是最大值。但是,varchar(MAX) 将在 SQL SERVER 2005+ 中工作。

CREATE TABLE IF NOT EXISTS users (
  uuid varchar(36) NOT NULL,
  json varchar(21808) NOT NULL,
  PRIMARY KEY (uuid)
);

FIDDLE

MAX() 是 MySql 中的一个函数,所以如果你想声明大小到 max.please 参考下面的例子。

CREATE TABLE IF NOT EXISTS users (
`uuid` varchar(36) NOT NULL,
`json` varchar(65535) NOT NULL,
PRIMARY KEY (`uuid`)
);

如果你计算出 21845*3 = 65535,那无论如何都行不通。
而 21844*3 = 65532 确实有效。

mysql> CREATE TABLE foo ( v VARCHAR(21844) ) CHARSET=utf8;
Query OK, 0 rows affected (0.32 sec)