【发布时间】:2021-01-14 21:33:16
【问题描述】:
我目前正在学校学习一些关于 sql 的基本知识。我们收到了一个练习,其中包括创建一个创建表的脚本。我们有一个架构,我们需要重新创建它。
我遇到了一些问题:
当我运行脚本时,它显示了这个错误:
CREATE TABLE "EMPLOYEE" ( "BIRTH_DATE" DATE , "FIRST_NAME" VARCHAR(14) , "LAST_NAME" VARCHAR(16) , "GENDER" ENUM('M','F') , "HIRE_DATE" DATE ) IN "TS_EMPLOYEE"
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0104N An unexpected token "(" was found following "16) , "GENDER" ENUM".
Expected tokens may include: "DEFAULT". SQLSTATE=42601
我在 Internet 上查找错误并认为我应该指定 DEFAULT。出于这个原因,我修改了添加这部分的脚本:
"GENDER" ENUM('M','F')DEFAULT 'M' ,
不幸的是,它对我没有多大帮助,因为它表明我犯了和以前一样的错误。 有谁知道我错在哪里?或者我可以改变什么?
感谢任何形式的帮助! ^^
【问题讨论】:
-
请编辑您的问题以准确显示您如何提交 SQL 。你在使用命令行吗?还是其他什么工具?另外
ENUM在 Db2 DDL 中无效,您可以使用 column-check-constraint 来进行简单检查,也可以使用其他方式。 -
为 mao 和 Gordon Linoff 所说的添加一些信息,当您告诉 DB2
GENDER ENUM(...时,DB2 语句解析器认为您需要一个名为GENDER的用户定义类型ENUM的列,这可能是不存在,并且像任何用户定义的类型语法一样不接受任何参数。这就是为什么它不会抱怨ENUM而是抱怨(什么都没有 -
大家好!谢谢你的提示。我正在研究 DB2。我们将脚本保存在我们的 CentOS 服务器中,并使用 puTTY 和 WinSCP,我编辑并运行它们。可能有更好的方法来做到这一点,但这是我在学校学到的._。顺便说一句,我不知道 DB2 不支持“ENUM”。感谢 Gordon Linoff 的回答,脚本再次运行 :) P.S:我想先创建表,然后是键,所以不用担心 :)