2016-01-20 81 views
0

我試圖導入我的SQL架構在IBM SQL數據庫(sqldb_free計劃)IBM SQL數據庫導入工作不

CREATE TABLE User (
    id INT NOT NULL AUTO_INCREMENT, 
    username VARCHAR(45) NOT NULL, 
    password VARCHAR(120) NULL, 
    salt VARCHAR(45) NULL, 
    authData VARCHAR(45) NULL, 
    CreditCardId VARCHAR(120) NULL, 
    DisplayUsername VARCHAR(120) NOT NULL, 
    email VARCHAR(120) NOT NULL, 
    cashBalance FLOAT NULL DEFAULT 0, 
    city VARCHAR(45) NULL, 
    country VARCHAR(45) NULL, 
    dob TIMESTAMP(4) NULL, 
    firstName VARCHAR(45) NOT NULL, 
    lastName VARCHAR(45) NULL, 
    gender TINYINT(1) NULL DEFAULT 1, 
    playerPoints INT NULL DEFAULT 0, 
    state CHAR(2) NULL, 
    tickets INT NULL, 
    userImage VARCHAR(240) NULL, 
    createdAt TIMESTAMP(4) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    revision VARCHAR(20) NULL, 
    cakeReqId VARCHAR(15) NULL, 
    cakeAffId VARCHAR(15) NULL, 
    signUpEvent TINYINT(1) NOT NULL DEFAULT 0, 
    depositEvent TINYINT(1) NOT NULL DEFAULT 0, 
    SignupSource VARCHAR(20) NULL, 
    TotalSpent FLOAT NULL DEFAULT 0, 
    address VARCHAR(120) NULL, 
    phone VARCHAR(45) NULL, 
    TicketTransferrable INT NULL, 
    updatedAt TIMESTAMP(4) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    FavouriteTeam INT NULL, 
    UNIQUE INDEX email_UNIQUE (email ASC), 
    PRIMARY KEY (id)); 

和錯誤消息是

DDL failed with message 
_ Exception. _ state = 42601; error code = -104; error Message = Error for batch element #1: An unexpected token "," was found following "NULL AUTO_INCREMENT". Expected tokens may include: "".. _CODE=-104, _STATE=42601, DRIVER=3.66.46 

我怎麼能解決這個問題?

+1

我認爲這[SO後(http://stackoverflow.com/questions/13466347/how-to-auto-increment-in-db2 )解決你正在嘗試做的事情。 – vmachan

+0

您在DB2手冊中的哪個位置找到了帶'auto_increment'或'tinyint(1)'的語法' –

回答

2

DDL語句有以下問題:

  1. DB2不支持 「AUTO_INCREMENT」 與 「GENERATED ALWAYS AS IDENTITY」 取代。
  2. DB2不支持將TINYINT數據類型替換爲INT或CHARACTER(1),具體取決於您的數據。
  3. 分別創建UNIQUE INDEX,刪除「UNIQUE INDEX email_UNIQUE(email ASC)」,並添加一個DDL索引。

按照如你可以解決它:

CREATE TABLE User (
    id INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1), 
    username VARCHAR(45) NOT NULL, 
    password VARCHAR(120) NULL, 
    salt VARCHAR(45) NULL, 
    authData VARCHAR(45) NULL, 
    CreditCardId VARCHAR(120) NULL, 
    DisplayUsername VARCHAR(120) NOT NULL, 
    email VARCHAR(120) NOT NULL, 
    cashBalance FLOAT NULL DEFAULT 0, 
    city VARCHAR(45) NULL, 
    country VARCHAR(45) NULL, 
    dob TIMESTAMP(4) NULL, 
    firstName VARCHAR(45) NOT NULL, 
    lastName VARCHAR(45) NULL, 
    gender TINYINT(1) NULL DEFAULT 1, 
    playerPoints INT NULL DEFAULT 0, 
    state CHAR(2) NULL, 
    tickets INT NULL, 
    userImage VARCHAR(240) NULL, 
    createdAt TIMESTAMP(4) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    revision VARCHAR(20) NULL, 
    cakeReqId VARCHAR(15) NULL, 
    cakeAffId VARCHAR(15) NULL, 
    signUpEvent TINYINT(1) NOT NULL DEFAULT 0, 
    depositEvent TINYINT(1) NOT NULL DEFAULT 0, 
    SignupSource VARCHAR(20) NULL, 
    TotalSpent FLOAT NULL DEFAULT 0, 
    address VARCHAR(120) NULL, 
    phone VARCHAR(45) NULL, 
    TicketTransferrable INT NULL, 
    updatedAt TIMESTAMP(4) NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    FavouriteTeam INT NULL, 
    PRIMARY KEY (id)); 

CREATE UNIQUE INDEX email_UNIQUE 
    ON user 
    (
     email ASC 
    ) 
; 
+0

您可能需要引用'user',因爲這是一個保留字:'create table「USER」(...) –