创建表时出现 Sql 错误 - Firebird

Posted

技术标签:

【中文标题】创建表时出现 Sql 错误 - Firebird【英文标题】:Sql error while creating tables - Firebird 【发布时间】:2019-04-08 09:05:07 【问题描述】:

我有 create table 的简单 sql 代码,然后是 add constraint 。它看起来像这样:

CREATE TABLE bills (
    id              INTEGER NOT NULL,
    code        VARCHAR2(25) NOT NULL,
    dateOfGeneration   DATE NOT NULL,
    job_id     INTEGER NOT NULL
);

ALTER TABLE bills ADD CONSTRAINT bills_pk PRIMARY KEY ( id,job_id );

我正在使用 IBExpert - Firebird 的客户端。当我执行此代码时,出现 2 个错误:

第一个错误:-在代码 VARCHAR2(25) NOT NULL

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 29.
(.

第二个错误:-在代码中ALTER TABLE ...

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 8, column 1.
ALTER.

我认为第一个是因为我使用的是varchar2 而不是varchar。第二个错误呢?如何解决这个问题?

【问题讨论】:

VARCHAR2? Firebord 真的支持这种数据类型吗? 我是这么想的,但似乎不是。 varchar 正在工作。改变表呢? 【参考方案1】:
    在 Firebird 中没有 VARCHAR2 类型 - https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-datatypes-chartypes.html 如果您想运行两个命令 - 您必须运行两个命令。您尝试同时运行两个命令,但这不是一种方法。您必须将它们拆分并一个接一个地运行。或者您必须将它们包装成一个 EXECUTE BLOCK 命令。 另外IBExpert 有一个单独的Script Executive 窗口,用于运行多个命令。它不是 SQL Editor 旨在执行一个命令,它是另一个菜单中的一个单独的窗口 - https://www.ibexpert.net/ibe/pmwiki.php?n=Doc.ScriptExecutive

这里描述了表创建命令:https://firebirdsql.org/file/documentation/reference_manuals/fblangref25-en/html/fblangref25-ddl-tbl.html

如果在一个命令中执行,基本上您尝试执行的操作如下所示:

CREATE TABLE bills (
    id              INTEGER NOT NULL,
    code        VARCHAR(25) NOT NULL, 
    dateOfGeneration   DATE NOT NULL,
    job_id     INTEGER NOT NULL,
  PRIMARY KEY ( id,job_id )
)

或者如果你坚持命名,那么也许

CREATE TABLE bills (
    id              INTEGER NOT NULL,
    code        VARCHAR(25) NOT NULL, 
    dateOfGeneration   DATE NOT NULL,
    job_id     INTEGER NOT NULL,
  CONSTRAINT bills_pk PRIMARY KEY ( id,job_id )
)

【讨论】:

以上是关于创建表时出现 Sql 错误 - Firebird的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 创建表时出现错误 1022

为啥在创建表时出现“需要 Hive 支持”错误?

创建新表类型时出现 PLS-00355 错误

用SQL创建视图时出现对象名无效错误,怎么解决

sql server 2008 在与 SQL Server 提示建立连接时出现与网络相关的或特定于实例的错误

运行 sql 语句时出现 snwochange 错误