错误"表名模式不能为NULL或空"尝试从现有项目生成changelog文件时

时间:2017-05-26 07:19:49

标签: java mysql spring hibernate liquibase

我无法使用此命令从MySQL服务器生成changelog文件

liquibase 
--driver=com.mysql.cj.jdbc.Driver
--classpath=\path\to\mysql-connector-java-6.0.6.jar 
--changeLogFile=com\example\db.changelog.yaml
--url=jdbc:mysql:http://hostip:3306/schemaName 
--username=scott 
--password=tiger 
generateChangeLog

这总是返回 - "表名模式不能为NULL或空",而我只有2个表,而且它们都有一个名字。

也许我需要提一下,整个DDL是由Hibernate制作的,我只是将DDL导出并导入模式。

这是一个Spring Boot项目。

2 个答案:

答案 0 :(得分:2)

您正在使用最新版本的MySQL驱动程序。在这些版本中,默认情况下,nullNamePatternMatchesAll参数的值为false。我不确定你是否可以强制你的JDBC连接字符串,并以某种方式添加?nullNamePatternMatchesAll = true到你的网址,使它有效地

  

--url = JDBC:MySQL的://主机IP:3306 / SCHEMANAME nullNamePatternMatchesAll =真

或者如果不起作用,请降级JDBC驱动程序。

这是一个JDBC元数据检索层的问题,Liquibase显然依赖它。

有关详细信息,请在此处查看示例:"Table name pattern can not be NULL or empty" in java

答案 1 :(得分:0)

尝试添加属性:defaultSchemaName=yourSchemaName