Liquibase et MySql - Comment générer automatiquement un identifiant à partir de l'UUID
P粉633733146
P粉633733146 2024-03-27 00:01:32
0
1
502

Je souhaite créer un script pour liquibase. Lorsque je fais une insertion dans mon prochain script, je souhaite générer automatiquement l'identifiant via UUID. J'ai essayé ce que j'ai trouvé là-bas : EDIT : j’ai utilisé une réponse :

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

Le premier script fonctionne bien, la table est créée, mais quand j'ajoute le deuxième 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>

Maintenant, l'erreur est :

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粉633733146
P粉633733146

répondre à tous(1)
P粉741678385

La définition de votre id colonne devrait ressembler à ceci :


    

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal