在 windows 运行 mysql 数据库迁移时文件不存在
File not exist when run mysql database migrations on windows
我克隆了一个现有的存储库(由我办公室的一个团队创建的存储库,它处理我们正在开发的某个应用程序中的订阅),其中在路径中有一些数据库迁移文件..\internal\db\migrations,这是迁移文件路径。
首先我 运行 命令 docker compose up
。对于现有的 docker.yaml ,然后我 运行 命令 go build
然后 go run .
.
我进行了调试,当应用程序到达即将 运行 迁移文件的位置时,它显示错误:
Failed to initialize App. Error: first D:\subscription-store: file does not exist
虽然我通过调试检查了路径,它们是正确的,同时迁移文件都存在。
我正在使用 visual studio 代码作为编辑器,Go 版本 1.15,docker 和 MySQL。我 运行 关注环境 windows 10.
经过调试和搜索,发现版本库使用了一些路径从本地驱动器获取迁移文件。路径是在代码库中为 Mac 编写的,我在 windows 机器上克隆了存储库,所以它不起作用。
错误具体发生在函数的调用
migrate.NewWithDatabaseInstance(
fmt.Sprintf("file://%s", fullPath),
"mysql",
driver,
)
第一个参数的生成路径是
file//d:\subscription-store\....\db\migrations
这对 windows 是错误的,因为路径中不应支持驱动程序 d:。
解决如下
"file:///"+"subscription-store\....\db\migrations"
当上面 URL 发送到函数而不是旧函数时,它成功运行。
我克隆了一个现有的存储库(由我办公室的一个团队创建的存储库,它处理我们正在开发的某个应用程序中的订阅),其中在路径中有一些数据库迁移文件..\internal\db\migrations,这是迁移文件路径。
首先我 运行 命令 docker compose up
。对于现有的 docker.yaml ,然后我 运行 命令 go build
然后 go run .
.
我进行了调试,当应用程序到达即将 运行 迁移文件的位置时,它显示错误:
Failed to initialize App. Error: first D:\subscription-store: file does not exist
虽然我通过调试检查了路径,它们是正确的,同时迁移文件都存在。
我正在使用 visual studio 代码作为编辑器,Go 版本 1.15,docker 和 MySQL。我 运行 关注环境 windows 10.
经过调试和搜索,发现版本库使用了一些路径从本地驱动器获取迁移文件。路径是在代码库中为 Mac 编写的,我在 windows 机器上克隆了存储库,所以它不起作用。
错误具体发生在函数的调用
migrate.NewWithDatabaseInstance(
fmt.Sprintf("file://%s", fullPath),
"mysql",
driver,
)
第一个参数的生成路径是
file//d:\subscription-store\....\db\migrations
这对 windows 是错误的,因为路径中不应支持驱动程序 d:。 解决如下
"file:///"+"subscription-store\....\db\migrations"
当上面 URL 发送到函数而不是旧函数时,它成功运行。