2013-12-09 12 views
5

Ben görünen bir liquibase Changeset aracılığıyla yeni bir tablo oluşturmak için denemek mysql autoincrement ile çalışmıyor gibi:Liquibase

liquibase.exception.DatabaseException: 
Error executing SQL CREATE TABLE 
kkm.mytable (id numeric AUTO_INCREMENT NOT NULL, name VARCHAR(50) NULL, description 
      VARCHAR(255) NULL, image_path VARCHAR(255) NULL, 
      CONSTRAINT PK_BOUFFE PRIMARY KEY (id)): 
Incorrect column specifier for column 'id' 

Ben ayarlarsanız autoIncrement =": Bu aşağıdaki hata nedeniyle başarısız

<createTable tableName="mytable"> 
     <column name="id" type="number" autoIncrement="true"> 
      <constraints primaryKey="true" nullable="false"/> 
     </column> 
     <column name="name" type="varchar(50)"/> 
     <column name="description" type="varchar(255)"/> 
     <column name="image_path" type="varchar(255)"/> 
    </createTable> 

yanlış ", bu mükemmel çalışıyor.
Bu bilinen bir sorun mu?

DÜZENLEME:

bu çalışıyor:

<createTable tableName="mytable"> 
     <column name="id" type="number" autoIncrement="false"> 
      <constraints primaryKey="true" nullable="false"/> 
     </column> 
     <column name="name" type="varchar(50)"/> 
     <column name="description" type="varchar(255)"/> 
     <column name="image_path" type="varchar(255)"/> 
    </createTable> 

    <addAutoIncrement 
      columnDataType="int" 
      columnName="id" 
      incrementBy="1" 
      startWith="1" 
      tableName="mytable"/> 
+1

Belirleyebileceğim bir fark var. Üst örnekte (işe yaramaz), türü "sayı" olarak ayarlarsınız. Türün altındaki birinde "int". Bu yüzden türü "int" olarak ayarlamayı denediniz mi? Ayrıca, [mysql doc] (http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html) de "... AUTO_INCREMENT için yeterince büyüklükte bir tamsayı veri türü kullanın sütun ... "Belki bir tam sayı olmalı? – Jens

+0

@Jens gerçekten de sorun buydu, dün de onu buldum ve bir cevap gönderecektim –

+0

Not: type = "number" likidibazın sonraki sürümlerinde düzeltilmelidir. 3.0.7+ inanıyorum. –

cevap

8

Değişim type = "sayı" = "BigInt" yazın.

ı, e

<createTable tableName="mytable"> 
     <column name="id" type="BIGINT" autoIncrement="true"> 
      <constraints primaryKey="true" nullable="false"/> 
     </column> 
     <column name="name" type="varchar(50)"/> 
     <column name="description" type="varchar(255)"/> 
     <column name="image_path" type="varchar(255)"/> 
    </createTable> 

çalıştığını Umut .. !!!!

+0

teşekkürler aslında ben type = "int" ile çözdüm –

İlgili konular