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

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, 

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

【讨论】:

以上是关于创建表脚本语法错误“表不存在”的主要内容,如果未能解决你的问题,请参考以下文章

休眠表不存在错误

表创建时的 MySQL 语法错误

对于除 ORA-00942 表不存在之外的所有错误,停止运行存储过程

PHP - MySQL - 表不存在

为 hsqldb 创建架构时出现语法错误

JavaFX CSS 错误(属性样式表不存在)