1

这是我第一次生成可以使用该-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

有人知道是什么原因造成的吗?从我所见,表“滑雪道”是在我尝试插入之前创建的,所以它怎么能说它不存在?

谢谢,克里斯。

4

2 回答 2

3

这个错误:

psql:create_tables.sql:33: 错误: ")" 第 8 行或附近的语法错误: );

告诉您该表创建。

您的创建表中有一个悬空的逗号,(在最后一列之后)。删除它,你应该没问题。

于 2014-02-09T13:22:29.333 回答
2

末尾的逗号会生成错误消息:

open boolean NOT NULL, 

其他消息是通知而不是错误。他们只是告诉你他们没有放弃桌子,因为他们不存在

于 2014-02-09T13:22:49.787 回答