在 gradle 项目中使用 Flyway 时如何启用 MySQL 连接字符串“ENABLE_LOCAL_INFILE”?
Posted
技术标签:
【中文标题】在 gradle 项目中使用 Flyway 时如何启用 MySQL 连接字符串“ENABLE_LOCAL_INFILE”?【英文标题】:How to enable the MySQL connection string "ENABLE_LOCAL_INFILE" when using Flyway in a gradle project? 【发布时间】:2021-09-06 10:18:15 【问题描述】:我的 Java gradle 项目中有几个 .txt
文件,我使用这些文件在 sql
脚本中使用 mysql 语句 LOAD DATA LOCAL INFILE
填充数据库。
我的PC上运行着一台MySQL服务器,其主机名为127.0.0.1
,端口为3306
,数据库名称为test
,所以在gradle项目的build.gradle
文件中,我通过以下方式配置flyway:
flyway
url = 'jdbc:mysql://127.0.0.1:3306/test'
user = 'root'
password = '111111'
.sql
文件的示例是
LOAD DATA LOCAL INFILE 'data/categories.txt' INTO TABLE category
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\n';
但是当使用gradle flywayMigrate -i
运行迁移时,我得到了以下错误:
Loading local data is disabled; this must be enabled on both the client and server sides
我想我已经在 server 端启用了它,如下所示,这是一个MySQL Command Line Client
截图。
希望我做得对。
这一步之后还是报错,所以我想我也需要在client端启用它,也就是在Java gradle项目中,对吗?
基于https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html,我应该设置ENABLE_LOCAL_INFILE = 1
。
但是怎么做呢?我应该在哪里添加这个ENABLE_LOCAL_INFILE = 1
连接字符串?
希望有人可以帮助我。 提前致谢!
【问题讨论】:
【参考方案1】:使用 JDBC 连接字符串属性allowLoadLocalInfile=true
见https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-security.html#cj-conn-prop_allowLoadLocalInfile
【讨论】:
以上是关于在 gradle 项目中使用 Flyway 时如何启用 MySQL 连接字符串“ENABLE_LOCAL_INFILE”?的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle 和 flyway 插件创建 MySQL 模式
Spring boot、JOOQ和Flyway如何一起使用?