MySQL语句中的语法错误未知

时间:2015-06-07 00:06:53

标签: mysql sql mysql-error-1064

我正在使用CREATE TABLE语句

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

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

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   语法在附近使用       'MAX)NOT NULL,               主要关键(uuid)               )'在第3行

对我没用。

3 个答案:

答案 0 :(得分:3)

MAX不支持此用途,它保留用于MAX功能。请使用等效数字,请查看:Equivalent of varchar(max) in MySQL?

答案 1 :(得分:1)

这对你有用。 MAX是保留关键字。指定varchar的确切数量而不是max。但是,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

答案 2 :(得分:1)

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)