这是我要运行的一个简单的sql命令:
CREATE TABLE USERMNGR.AUTHORIZED_CLIENT (
ID BIGINT (8) DEFAULT J NOT NULL,
AUTHORIZED_CLIENT_STATUS CHAR (10) DEFAULT 'Y',
CLIENT_NAME VARCHAR (40) DEFAULT 'N' NOT NULL,
NATIONAL_CODE CHAR (16) DEFAULT 'N' NOT NULL,
PRIMARY KEY (ID)
);
它有一些空格,但我认为它们不会造成任何问题。使用 IBM Data Studio、DBeaver 和 DB2 CLI 运行脚本将给出以下错误:
SQL Error [42601]: An unexpected token "BIGINT" was found following "ORIZED_CLIENT (
ID". Expected tokens may include: "BINARY".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.33.31
我找不到问题出在哪里。我在运行脚本之前手动创建了数据库
USERMNGR
,并且知道 BIGINT
受 DB2 支持。我在互联网上发现的每个 unexpected token
错误都有一些该命令没有的问题。这是一个简单的CREATE TABLE
。我什至删除了前面的USERMNGR.
,但它没有改变任何东西。我将 BIGINT
数据类型更改为 INTERGER
,它向我抛出了另一个错误:
CREATE TABLE USERMNGR.AUTHORIZED_CLIENT (
ID INTEGER (8) DEFAULT J NOT NULL,
AUTHORIZED_CLIENT_STATUS CHAR (10) DEFAULT 'Y',
CLIENT_NAME VARCHAR (40) DEFAULT 'N' NOT NULL,
NATIONAL_CODE CHAR (16) DEFAULT 'N' NOT NULL,
PRIMARY KEY (ID)
);
SQL Error [42601]: An unexpected token "(" was found following "LIENT (
ID INTEGER". Expected tokens may include: "CHECK".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.33.31
再一次尝试:
CREATE TABLE USERMNGR.AUTHORIZED_CLIENT (
ID INTEGER DEFAULT J NOT NULL,
AUTHORIZED_CLIENT_STATUS CHAR (10) DEFAULT 'Y',
CLIENT_NAME VARCHAR (40) DEFAULT 'N' NOT NULL,
NATIONAL_CODE CHAR (16) DEFAULT 'N' NOT NULL,
PRIMARY KEY (ID)
);
错误:
SQL Error [42601]: An unexpected token "NOT" was found following "D INTEGER DEFAULT J". Expected tokens may include: "<references_spec>".. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.33.31
我是 DB2 的新手,对 sql 了解更多,但我也不是专业人士。我在这里做错了什么吗?预先感谢。
您在尝试在 DB2 数据库中创建表时似乎遇到了一些语法问题。让我们看看是否可以解决这个问题!
CREATE TABLE USERMNGR.AUTHORIZED_CLIENT (
ID BIGINT DEFAULT 0 NOT NULL,
AUTHORIZED_CLIENT_STATUS CHAR(10) DEFAULT 'Y',
CLIENT_NAME VARCHAR(40) DEFAULT 'N' NOT NULL,
NATIONAL_CODE CHAR(16) DEFAULT 'N' NOT NULL,
PRIMARY KEY (ID)
);
In this corrected answer:
I removed the size specification for BIGINT, as it's unnecessary.
Give it a shot, and let's see if it works. I'm not entirely sure if this will fix the problem, but it's worth a try.