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"/>
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
@Jens davvero era il problema, l'ho trovato anche ieri e stavo per postare una risposta grazie –
Nota: type = "number" dovrebbe essere corretto nelle versioni successive di liquibase. 3.0.7+ Credo. –