2013-12-09 20 views
5

cerco di creare una nuova tabella attraverso un insieme di modifiche liquibase che assomiglia:Liquibase non funziona con MySQL autoincrement

<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> 

questo fallisce con seguente errore:

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' 

se ho impostato autoIncrement =" falso ", funziona perfettamente.
Si tratta di un problema noto?

EDIT:

questo sta lavorando:

<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

C'è una differenza che posso individuare. Nell'esempio superiore (che non funziona) si imposta il tipo su 'number'. In quello sotto il tipo è 'int'. Quindi hai provato a impostare il tipo su 'int'? Inoltre, il [mysql doc] (http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html) dice anche "... Utilizzare un tipo di dati intero abbastanza grande per AUTO_INCREMENT colonna ... "Quindi forse deve essere un numero intero? – Jens

+0

@Jens davvero era il problema, l'ho trovato anche ieri e stavo per postare una risposta grazie –

+0

Nota: type = "number" dovrebbe essere corretto nelle versioni successive di liquibase. 3.0.7+ Credo. –

risposta

8

Change type = "numero" per digitare = "BIGINT".

i, 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> 

Speranza che funziona .. !!!!

+0

grazie in realtà l'ho risolto con type = "int" –

Problemi correlati