search

Home  >  Q&A  >  body text

Liquibase and MySql - How to automatically generate id from UUID

I want to create a liquibase script. When I do an insert in my next script, I want to automatically generate the id via UUID. I tried what I found there: EDIT: I used an answer:

<property name="u_id" value="uuid()" dbms="mysql"/>
<changeSet id="1" author="xyz">
    <createTable tableName="persons">
        <column name="id" type="varchar(36)" defaultValueComputed="${u_id}">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="name" type="varchar(50)">
            <constraints nullable="false"/>
        </column>
        <column name="surname" type="varchar(50)">
            <constraints nullable="false"/>
        </column>
        <column name="email" type="varchar(50)">
            <constraints nullable="false" unique="true"/>
        </column>
    </createTable>
</changeSet>
</databaseChangeLog>

The first script works fine and the table is created, but when I add the second script:

<changeSet  id="2" author="xyz">
    <insert tableName="persons">
        <column  name="name"  value="name value"/>
        <column  name="surname"  value="surname value"/>
        <column  name="email"  value="email value"/>
    </insert>
</changeSet>

Now the error is:

org.springframework.beans.factory.BeanCreationException: Error creating bean with 
name 'liquibase' defined in class path resource [liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: 
Invocation of init method failed; nested exception is liquibase.exception.LiquibaseException: liquibase.exception.MigrationFailedException: 
  Migration failed for change set db/version/V1__create_persons_table.xml::1::xyz:
 Reason: liquibase.exception.DatabaseException: 
 You have an error in your SQL syntax; check the manual that corresponds to your 
 MySQL server version for the right syntax to use near 'uuid() NOT NULL, 
 name VARCHAR(50) NOT NULL, surname VARCHAR(50) NOT NULL' at line 1 [Failed SQL: (1064) CREATE TABLE ticketapidatabase.persons (id VARCHAR(36) DEFAULT uuid() NOT NULL, name VARCHAR(50) NOT NULL, surname VARCHAR(50) NOT NULL, email VARCHAR(50) NOT NULL, CONSTRAINT PK_PERSONS PRIMARY KEY (id), UNIQUE (email))]

P粉633733146P粉633733146247 days ago510

reply all(1)I'll reply

  • P粉741678385

    P粉7416783852024-03-27 13:06:45

    Your id column definition should look like this:

    
        
    
    

    reply
    0
  • Cancelreply