DB2 LUW创建表时出现Unexpected token 'BIGINT'错误求助
问题分析与修正
你的SQL语句存在两处关键语法错误,导致DB2解析失败:
- BIGINT类型错误指定长度:DB2中
BIGINT是固定8字节的整数类型,不需要像CHAR/VARCHAR那样通过括号指定长度。BIGINT (8)的写法不符合DB2语法规范,会触发解析错误。 - 默认值未加单引号:
DEFAULT J中的J没有用单引号包裹,DB2会将其视为标识符(如列名、变量)而非字符串常量,这会导致语法解析异常,正确写法应为DEFAULT 'J'。
空格确实不会影响执行,但统一格式能提升代码可读性。
修正后的SQL语句
CREATE TABLE USERMNGR.AUTHORIZED_CLIENT ( ID BIGINT 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) );
额外说明
如果你原本希望ID列使用自增序列而非固定字符串默认值,DB2中可以用GENERATED ALWAYS AS IDENTITY实现,示例如下:
CREATE TABLE USERMNGR.AUTHORIZED_CLIENT ( ID BIGINT GENERATED ALWAYS AS IDENTITY 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) );
内容的提问来源于stack exchange,提问作者III_phr
相关产品推荐
相关产品推荐

