相关疑难解决方法(0)

Liquibase - 用uuid插入行

我有两个表声明如下:

<changeSet author="istvan" id="country-table-changelog">
    <createTable tableName="country">
        <column name="id" type="uuid">
            <constraints nullable="false" unique="true" />
        </column>
        <column name="name" type="varchar">
            <constraints nullable="false" unique="true" />
        </column>
    </createTable>
</changeSet>

<changeSet author="istvan" id="region-table-changelog">
    <createTable tableName="region">
        <column name="id" type="uuid" >
            <constraints nullable="false" unique="true" />
        </column>
        <column name="country_id" type="uuid">
            <constraints nullable="false" />
        </column>
        <column name="name" type="varchar">
            <constraints nullable="false" unique="true" />
        </column>
    </createTable>
</changeSet>

<changeSet author="istvan" id="region-country-foreign-key-constraint">
    <addForeignKeyConstraint 
        baseTableName="region"
        baseColumnNames="country_id"
        referencedTableName="country"
        referencedColumnNames="id"
        constraintName="fk_region_country"
        onDelete="CASCADE" 
        onUpdate="RESTRICT"/>
</changeSet>
Run Code Online (Sandbox Code Playgroud)

我想从liquibase changelog文件填充两个表,其中包含以下值:

INSERT INTO country VALUES('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'HUNGARY');
INSERT INTO region VALUES('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 'Baranya'); …
Run Code Online (Sandbox Code Playgroud)

sql liquibase

9
推荐指数
1
解决办法
8872
查看次数

如何在h2数据库中插入特定的UUID?

我需要在数据库中插入一些默认数据。我正在使用 Spring Boot 与 Flyway 集成。为了进行测试,我使用 H2。对于生产,将使用 MySQL。

我制作了单独的 Flyway 迁移脚本,因此我可以使用数据库特定的内容作为默认数据(创建表是在通用脚本中完成的)。

对于 MySQL,我有这样的东西:

INSERT INTO survey_definition (id, name, period) 
VALUES (0x2D1EBC5B7D2741979CF0E84451C5BBB1, 'disease-activity', 'P1M');
Run Code Online (Sandbox Code Playgroud)

我怎样才能对 H2 做同样的事情?

我只找到了该RANDOM_UUID()函数,它可以工作,但我需要使用已知的 UUID,因为我在进一步的语句中将其用作外键。

mysql uuid h2

6
推荐指数
1
解决办法
1万
查看次数

在 H2 数据库引擎中指定 UUID 类型的主键列的默认值?

这个SQL:

\n\n
CREATE TABLE product_ ( \n    pkey_ UUID PRIMARY KEY\n) ; \n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6成功创建表。

\n\n

但我希望新行默认为生成的 UUId,如本 AnswerRANDOM_UUID()所示。

\n\n
CREATE TABLE product_ ( \n    pkey_ UUID PRIMARY KEY DEFAULT RANDOM_UUID() \n) ; \n
Run Code Online (Sandbox Code Playgroud)\n\n

但这失败并出现错误:

\n\n
\n

org.h2.jdbc.JdbcSQLException: SQL 语句中的语法错误“CREATE TABLE PRODUCT_ (\n PKEY_ UUID PRIMARY KEY DEFAULT[*] RANDOM_UUID() \n ) ;”; 预期为“HASH、AUTO_INCRMENT、NOT、NULL、CHECK、REFERENCES、,、)”;SQL语句:

\n
\n\n

此错误的原因和解决方法是什么?

\n

uuid h2 primary-key create-table

1
推荐指数
1
解决办法
3567
查看次数

标签 统计

h2 ×2

uuid ×2

create-table ×1

liquibase ×1

mysql ×1

primary-key ×1

sql ×1