创建表脚本语法错误“表不存在”
Posted
技术标签:
【中文标题】创建表脚本语法错误“表不存在”【英文标题】:Create table script syntax error "table does not exist" 【发布时间】:2014-02-09 13:18:36 【问题描述】:这是我第一次生成可以使用-f
选项通过 psql 终端运行的脚本。
我的脚本如下:
DROP TABLE if EXISTS piste;
DROP TABLE if EXISTS lift;
DROP TABLE if EXISTS lift_location;
CREATE TABLE piste (
piste_name varchar(30) PRIMARY KEY NOT NULL,
grade varchar(10) NOT NULL,
length decimal NOT NULL,
fall smallint NOT NULL,
open boolean NOT NULL,
);
INSERT INTO piste (name, grade, length, fall, open) VALUES
('test name', 'easy', 3.2, 400, true);
这会产生以下错误:
psql:create_tables.sql:22: NOTICE: table "piste" does not exist, skipping
DROP TABLE
psql:create_tables.sql:23: NOTICE: table "lift" does not exist, skipping
DROP TABLE
psql:create_tables.sql:24: NOTICE: table "lift_location" does not exist, skipping
DROP TABLE
psql:create_tables.sql:33: ERROR: syntax error at or near ")"
LINE 8: );
^
psql:create_tables.sql:36: ERROR: relation "piste" does not exist
LINE 1: INSERT INTO piste (name, grade, length, fall, open) VALUES
有人知道这是什么原因吗?据我所知,表“滑雪道”是在我尝试插入之前创建的,所以它怎么能说它不存在?
谢谢, 克里斯。
【问题讨论】:
【参考方案1】:这个错误:
psql:create_tables.sql:33: 错误: ")" 处或附近的语法错误 第 8 行:);
告诉您该表未创建。
您的创建表中有一个悬空的逗号,
(在最后一列之后)。删除它,你应该会没事的。
【讨论】:
【参考方案2】:末尾的逗号生成错误信息:
open boolean NOT NULL,
其他消息是通知而不是错误。他们只是告诉你他们没有删除桌子,因为他们不存在
【讨论】:
以上是关于创建表脚本语法错误“表不存在”的主要内容,如果未能解决你的问题,请参考以下文章