goInception icon indicating copy to clipboard operation
goInception copied to clipboard

sql_mode 设置了HIGH_NOT_PRECEDENCE时,建表语句 not null 检测报错

Open mago-git opened this issue 2 years ago • 1 comments

描述 当sql_mode 设置了HIGH_NOT_PRECEDENCE 时,如果列中有not null设置,会得到一个错误,并且没有足够明确的提示信息

重现 例如: CREATE TABLE test ( id BIGINT(19) not null AUTO_INCREMENT COMMENT '主键', user_task_id VARCHAR(200) not null COMMENT '用户任务Id' COLLATE 'utf8mb4_general_ci', PRIMARY KEY (id) USING BTREE ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=167 ; 将会得到下面的提示信息,看起来像把此处的not当作了运算符??,我的理解这个参数应当只是在条件语句中调整运算符优先级 line 2 column 21 near "not null AUTO_INCREMENT COMMENT '主键', user_task_id VARCHAR(200) not null COMMENT '用户任务Id' COLLATE 'utf8mb4_general_ci', PRIMARY KEY (id) USING BTREE ) COLLATE='utf8mb4_general_ci' ENGINE=InnoDB AUTO_INCREMENT=167 "

环境

  • 数据库: [mysql]
  • 版本: [8.0.25]

参数 sql_mode: REAL_AS_FLOAT,PIPES_AS_CONCAT,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,HIGH_NOT_PRECEDENCE,NO_ENGINE_SUBSTITUTION

mago-git avatar Dec 18 '23 08:12 mago-git

可以看下我fork的分支,修复了这个问题https://gitee.com/zhoujin826/goInception

zmix999 avatar Feb 20 '24 01:02 zmix999