PostgreSQL执行CREATE TABLE报42601 near 'not'语法错误求助
报错根本原因
你遇到的语法错误是user_on_free_plan和boolean之间存在不可见的特殊空白字符(最常见的是Unicode非中断空格U+00A0),不是标准的ASCII空格。
这类特殊空白通常是从办公文档、网页、第三方编辑器中复制内容时意外带入的,PostgreSQL的SQL解析器无法识别这类特殊空白,会把user_on_free_plan boolean识别为一个连续的非法标识符,解析到后续的not关键字时无法匹配字段定义的语法规则,就会抛出你遇到的42601语法错误。
因为这个特殊字符绑定在该行内容中,所以无论你把该行移动到建表语句的任何位置,报错都会指向这行,也不会影响其他手动编写的同类建表语句执行。
解决方法
- 直接整行删除
user_on_free_plan boolean not null,,手动重新输入该行内容即可,不要复制粘贴原有内容 - 也可以开启编辑器的「显示不可见字符」功能,找到
user_on_free_plan和boolean之间的特殊空白,替换为普通空格即可。
内容的提问来源于stack exchange,提问作者AndrasU
相关产品推荐
相关产品推荐

