开发:异常收集之 DB2建表相关问题

第一次用DB2数据库,由于考虑到建表语句可能不一样,所以采用手动建表的办法,一个个字段去填。并勾选主键,最后发现创建失败。看了下系统生成的sql语句

sql语句如下:

CREATE TABLE FRONT.SCORE_REVERSE
(
 SERIAL_NO VARCHAR(50),
 SECRET_KEY VARCHAR(50), 
 TRADEBOX_ID INTEGER(32), 
 REDUCE_POINT_TYPE VARCHAR(50), 
 REDUCE_POINT_REASON VARCHAR(50), 
 REDUCE_TIME VARCHAR(50), 
 LOGIN_NAME VARCHAR(50), 
 COMMODITY_ID INTEGER(32), 
 COMMODITY_NUMBER VARCHAR(50), 
 POINT INTEGER(32), 
 CONTACT_NAME VARCHAR(50), 
 CONTACT_MOBILE_NO VARCHAR(50), 
 CONTACT_ADDRESS VARCHAR(50), 
 COMMODITY_TYPE VARCHAR(50), 
 REVERSE_TIME VARCHAR(50), 
 PRIMARY KEY (SERIAL_NO));


提示以下两个错误:

第一个异常:[CREATE - 0 row(s), 0.000 secs]  [Error Code: -104, SQL State: 42601]  DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=INTEGER;R(50), 

由于网上搜不到想要的答案,遂直接看问题,发现提示SQLERRMC=INTEGER;R(50)  于是去掉INTEGER的长度,将INTEGER(32) 改成了INTEGER。 问题解决



第二个异常:DB2 SQL Error: SQLCODE=-542, SQLSTATE=42831, SQLERRMC=SERIAL_NO, DRIVER=4.15.82

这个就让我找不到头脑,经搜索发现,DB2创建主键时,其主键sql必须设置不为空。 也就是要设置为: SERIAL_NO VARCHAR(50) not null,       而系统生成的没有not null


重新修改sql,再次执行  ok    ,表创建完毕              

你可能感兴趣的:(sql,db2,异常)