2016-01-20 80 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”(...) –