创建表脚本语法错误“表不存在”

时间:2014-02-09 13:18:37

标签: sql postgresql create-table drop-table

这是我第一次使用-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

有人知道造成这种情况的原因吗?从我所看到的,表“piste”是在我尝试插入之前创建的,所以它怎么能说它不存在呢?

谢谢, 克里斯。

2 个答案:

答案 0 :(得分:3)

此错误:

  

psql:create_tables.sql:33:错误:语法错误在或附近“)”   第8行:);

告诉您表格已创建。

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

答案 1 :(得分:2)

最后的逗号生成错误消息:

open boolean NOT NULL, 

其他消息是NOTICEs not errors。他们只是告诉你他们没有放弃桌子,因为他们不存在

相关问题