2013-12-09 10 views
5

Ich versuche, eine neue Tabelle über einen liquibase changeset zu erstellen, die wie folgt aussieht:Liquibase arbeitet nicht mit 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> 

dies mit folgendem Fehler fehl:

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' 

wenn ich gesetzt autoIncrement =“ falsch ", das funktioniert perfekt.
Ist dies ein bekanntes Problem?

EDIT:

dies funktioniert:

<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

Es gibt einen Unterschied, den ich erkennen kann. Im oberen Beispiel (das nicht funktioniert) setzen Sie den Typ auf "Zahl". In der unter dem Typ ist "Int". Also hast du versucht, den Typ auf "int" zu setzen? Auch die [mysql doc] (http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html) sagt auch "... Verwenden Sie einen ausreichend großen Integer-Datentyp für AUTO_INCREMENT Spalte ... "Also muss es vielleicht eine ganze Zahl sein? – Jens

+0

@Jens in der Tat, das war das Problem, ich fand es auch gestern und wollte eine Antwort schreiben Dank –

+0

Hinweis: type = "Nummer" sollte in späteren Versionen von liquibase behoben werden. 3.0.7+ glaube ich. –

Antwort

8

ändern type = "number" in type = "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> 

Hoffe, es funktioniert .. !!!!

+0

danke ich habe es tatsächlich mit type = "int" gelöst –

Verwandte Themen