【问题标题】:Load an image with a relative path using mysql command line使用 mysql 命令行加载具有相对路径的图像
【发布时间】:2020-09-27 06:46:09
【问题描述】:

我正在使用 Flyway 在我的 spring 项目开始时启动 MYSQL 脚本,但我目前遇到了一个问题,因为我想使用相对路径将图像加载到我的数据库中,因为我的项目将在另一台服务器上并且我想从 Flyway 加载文件。

问题是我不能使用 mysql 的 LOAD_FILE 函数,因为它只使用绝对路径。

UPDATE table
SET image = LOAD_FILE('/path/to/folder/image.jpg')
WHERE id=1;

我目前正在寻找另一种方法,如果您有任何建议,我将不胜感激

【问题讨论】:

  • MySQL 客户端程序(用 Java、php、python 或其他编程语言编写)可以读取 .jpg 之类的二进制文件并将其放入 BLOB 列中。 Flyway 建议使用“Java 迁移”来处理 BLOB 列。
  • 非常感谢,这是一个非常好的解决方案

标签: mysql flyway


【解决方案1】:

按照 Jones 的建议,我通过在我的 Java 文件夹中创建文件夹 db/migration 来使用基于 Java 的迁移。

在这个文件夹中,我有一个迁移:

public void migrate(final Context context) throws Exception {
       Connection con = context.getConnection();
InputStream image = new ClassPathResource("image/image.jpg").getInputStream();

        String requestUpdate = "UPDATE table SET image = ? WHERE id=?";
        PreparedStatement preparedStatementUpdate = con.prepareStatement(requestUpdate);
        preparedStatementUpdate.setBlob(1, image );
        preparedStatementUpdate.setString(2, "1");
        preparedStatementUpdate.execute();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    相关资源
    最近更新 更多