- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在自学如何使用 Liquibase 进行 MySQL 数据库版本控制和迁移。
我正在进行一个 Spring Boot 项目,使用 Maven 和 MySQL 来处理数据库。
我创建了一个主变更日志来包含多个变更日志文件,到目前为止一切都很好。当应用我的第一次迁移创建一个包含 id、电子邮件、名称、创建和更新列的简单用户表时,问题就开始了。
除了一件事之外,迁移运行良好。 Liquibase 不会对所有列应用 NOT NULL、更新的 TIMESTAMP 数据类型或 CURRENT_TIMESTAMP 额外内容,并且还会忽略电子邮件列的唯一索引。
我的第一次尝试是在 .xml 更改日志上,我认为它可能是 .xml 格式,因此我将其更改为 SQL 语法。那也没用。我也先创建了表,然后添加了非空约束,但没有成功。
此时我不知道还能做什么,也找不到任何关于它的更好的帖子或文档。
注意:它应用的唯一“特殊”约束是主键和自动增量,并忽略所有其他功能。
如果我能得到任何帮助,我将非常感激!
这是我的 liquibase.properties:
url = jdbc:mysql://localhost/skullproject
username = skull
password = skullpass
driver = com.mysql.jdbc.Driver
这是我的迁移 XML 更改日志:
<changeSet id="1" author="f6rnando">
<createTable tableName="user">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="email" type="VARCHAR(80)">
<constraints nullable="false" />
</column>
<column name="password" type="VARCHAR(80)">
<constraints nullable="false" />
</column>
<column name="name" type="VARCHAR(80)">
<constraints nullable="false" />
</column>
<column name="updated" type="TIMESTAMP" defaultValueComputed="CURRENT_TIMESTAMP">
<constraints nullable="false" />
</column>
<column name="created" type="DATETIME">
<constraints nullable="false" />
</column>
</createTable>
</changeSet>
<changeSet author="f6rnando" id="1491156436761-3">
<addUniqueConstraint columnNames="email"
constraintName="email_UNIQUE" tableName="user" />
</changeSet>
这是我的 MySQL 变更日志:
--liquibase formatted sql
--changeset f6rnando:1
CREATE TABLE user (
id BIGINT NOT NULL AUTO_INCREMENT,
email VARCHAR(80) NOT NULL,
password VARCHAR(80) NOT NULL,
name VARCHAR(80) NOT NULL,
updated TIMESTAMP NOT NULL DEFAULT current_timestamp,
created DATETIME NOT NULL,
PRIMARY KEY (id),
UNIQUE INDEX email_UNIQUE (email ASC)
);
--changeset f6rnando:2
ALTER TABLE user MODIFY email VARCHAR(80) NOT NULL;
--changeset f6rnando:3
ALTER TABLE user MODIFY password VARCHAR(80) NOT NULL;
尝试了所有方法后,结果始终相同: MySQL Table info
我在 MySQL Workbench 上运行了 CREATE TABLE 语句,没有遇到任何问题。所有的约束都创建得很好: MySQL Table executed on Workbench
最佳答案
经过一周的研究和试验,问题出在 Hibernate 配置上。在我的 application.properties 文件中,我有 spring.jpa.hibernate.ddl-auto = create-drop ,这意味着根据 @Entity 类,数据库被创建,然后在 SessionFactory 关闭时被删除。显然这会覆盖 Liquibase 行为。
为了解决这个问题,我将spring.jpa.hibernate.ddl-auto
设置为none
。然后 Liquibase 就能够按预期运行。
关于mysql - Liquibase 无法在 MySQL 上添加非空、唯一、当前时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43172564/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!