【问题标题】:unable to run sql file in ubuntu command line无法在 ubuntu 命令行中运行 sql 文件
【发布时间】:2015-09-21 05:16:26
【问题描述】:

我在命令行中输入了以下查询并且它有效,但是当我尝试通过命令@..../filename.sql 运行它时,第一个查询有效,但第二个查询无效...我可以'不知道为什么。需要帮忙。 还有我收到的错误消息 SP2-0042 未知命令“)” - 忽略行的其余部分

这里是查询

/** Query 1: works through terminal and by calling @.../filename.sql**/

CREATE TABLE CUSTOMER
( cID   NUMBER NOT NULL,
  firstName     VARCHAR2(50) NOT NULL,
  lastName  VARCHAR2(50) NOT NULL,
  streetAddress VARCHAR2(50),
    CONSTRAINT CUSTOMER_PK PRIMARY KEY (customerID) 
);

/**Query2: only works through terminal**/

CREATE TABLE ADDRESS
( 
  cID   NUMBER NOT NULL,
  city          VARCHAR2(50) NOT NULL,
  zipCode       VARCHAR2(50) NOT NULL,
    CONSTRAINT FK_CUSTOMER_ADDRESS FOREIGN KEY (cID) REFERENCES CUSTOMER(cID) ON UPDATE CASCADE

);

【问题讨论】:

  • 你能详细说明它是如何不工作的吗?它会产生错误消息吗?还是被忽略了?
  • 我收到的错误消息为 SP2-0042 Unknown command ")" - 其余行被忽略

标签: sql oracle


【解决方案1】:

SQL Plus 不喜欢 DDL 中间的空行(对于非过程对象)。删除右括号前的空行或在运行该 DDL 之前运行 set sqlblanklines on

【讨论】:

  • 我尝试设置 sqlblanklines on 并删除了结束括号前的空行,这次它产生了另一个错误消息 ORA-00905: missing keyword
【解决方案2】:

Oracle 不支持ON UPDATE CASCADE,只支持ON DELETE CASCADE

https://docs.oracle.com/cd/E11882_01/server.112/e41084/clauses002.htm#CJAIHHGC

所以除了空行(Allan 已经指出),您需要删除外键的 ON UPDATE CASCADE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 2019-11-08
    • 2017-10-03
    • 2018-07-18
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多