Heroku关联Git的PostgreSQL配合PHP应用SQL语法错误排查求助
问题排查:PostgreSQL SQL语法错误修复
嘿,这个问题其实很清晰——你的SQL语句里列定义的顺序搞反了,和依赖库没有关系哦😉
错误原因分析
从报错信息ERROR: syntax error at or near "NOT : LINE 2: UserID NOT NULL PRIMARY KEY varchar(255),可以看出,你把数据类型放在了约束(NOT NULL、PRIMARY KEY)的后面,这违反了标准SQL(包括PostgreSQL)的语法规则。
正确的列定义顺序应该是:列名 → 数据类型 → 约束
修正后的代码示例
假设你原来的CREATE TABLE语句是这样的:
$raterTable = pg_query($conn, "CREATE TABLE rater ( UserID NOT NULL PRIMARY KEY varchar(255), -- 其他列定义 )");
把它改成正确的顺序就可以了:
$raterTable = pg_query($conn, "CREATE TABLE rater ( UserID varchar(255) NOT NULL PRIMARY KEY, -- 其他列按「列名+类型+约束」的顺序定义 )");
额外排查小技巧
- 写SQL时尽量严格遵循语法顺序,PostgreSQL对格式要求比较严谨
- 不确定语法的话,可以先用
heroku pg:psql命令进入Heroku的PostgreSQL控制台,手动执行CREATE语句测试,没问题再写到PHP代码里 - 在PHP中调试时,可以先把要执行的SQL语句打印出来(比如
echo $sql;),确认传递给数据库的内容和你预期的一致
内容的提问来源于stack exchange,提问作者Newoda
相关产品推荐
相关产品推荐

