開發:異常收集之 DB2建表相關問題,db2相關問題

來源:互聯網
上載者:User

開發:異常收集之 DB2建表相關問題,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    ,表建立完畢              


db2建表語句

-- 以table1表為例建立一個結構一樣的零時的表table2
CREATE GLOBAL TEMPORARY TABLE table2 LIKE table1;

-- 並插入table1表的資料到table2中來
insert into table2 select * from table1;
 
DB2中怎查詢建表的SQL

select name from sysibm.systables where type='T' and creator='DB2ADMIN'
type:資料庫表用T表示;資料庫檢視用V表示
creator:資料庫物件的建立者
select tabname from syscat.tables where tabschema = current schema ;// 擷取當前模式下面的所有使用者表

補充一下:mysql中直接用show tables 就可以查詢了吧
希望採納~
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.