gpt4 book ai didi

mysql - liquibase 没有创建无符号列

转载 作者:可可西里 更新时间:2023-11-01 07:39:28 25 4
gpt4 key购买 nike

我的环境:

  • Java:1.8.0_20,64 位
  • liquibase:3.3.1
  • mysql: 5.5.34
  • mysql连接器:mysql-connector-java-5.1.34-bin.jar
  • mysql驱动:com.mysql.jdbc.Driver
  • mysql连接字符串:jdbc:mysql://localhost/my_db
  • mysql用户:root用户
  • 操作系统:windows 7 64

数据库更改日志xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd">

<changeSet author="jbenton" id="create my_test_tbl table">
<sql> SET storage_engine=MYISAM; </sql>
<createTable tableName="my_test_tbl">
<column autoIncrement="true" name="my_test_tbl_id" type="INT UNSIGNED">
<constraints primaryKey="true"/>
</column>
<column defaultValueNumeric="0" name="col_smallint" type="SMALLINT">
<constraints nullable="false"/>
</column>
<column defaultValueNumeric="0" name="col_smallint_unsigned" type="SMALLINT UNSIGNED"/>
<column defaultValueNumeric="0" name="col_smallint_unsigned_not_null" type="SMALLINT UNSIGNED">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>

使用 updateSql 命令,我看到生成了以下 sql

CREATE TABLE my_db.my_test_tbl (
my_test_tbl_id INT AUTO_INCREMENT NOT NULL,
col_smallint SMALLINT DEFAULT 0 NOT NULL,
col_smallint_unsigned SMALLINT DEFAULT 0 NULL,
col_smallint_unsigned_not_null SMALLINT DEFAULT 0 NOT NULL,
CONSTRAINT PK_MY_TEST_TBL PRIMARY KEY (my_test_tbl_id));

我的目标是列为 SMALLINT UNSIGNED。我做错了什么吗?

最佳答案

我实现了 CORE-2300 Unsigned Int / Bigint cannot be created解决了这个问题。已经合并到master分支。如果您可以使用基于 master 的 -SNAPSHOT 版本,那么您可以在 3.4.0 发布之前获得修复,我怀疑这将在接下来的几个月内发布。

如果您使用的是 Maven:

<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.4.0-SNAPSHOT</version>
</dependency>

或者从构建服务器下载:

https://liquibase.jira.com/builds/browse/CORE-LB-90/artifact

liquibase-3.4.0-SNAPSHOT-bin.zip

或者如果您想使用 3.3.x,您可以创建自己的 3.3.4-SNAPSHOT

$ git clone https://github.com/liquibase/liquibase.git
$ cd liquibase
$ git checkout 3.3.x
$ git cherry-pick 5bf8fc591477587c3f61c876e91011d0b8a6d362
$ git status
$ # resolve the merge conflicts
$ vi liquibase-core/src/main/java/liquibase/datatype/core/*IntType.java
$ git add '*.java'
$ git cherry-pick --continue
$ mvn clean verify

然后更新您的 POM:

<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.3.4-SNAPSHOT</version>
</dependency>

或使用生成的分发 zip 文件。

关于mysql - liquibase 没有创建无符号列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com