Skip to content

Commit 4a73473

Browse files
committed
Fix structure_load/2 for MySQL 9.4+
On MySQL 9.4+, `--execute "SOURCE {path}"` is no longer supported.
1 parent 69954cb commit 4a73473

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

lib/ecto/adapters/myxql.ex

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -416,16 +416,18 @@ defmodule Ecto.Adapters.MyXQL do
416416
def structure_load(default, config) do
417417
path = config[:dump_path] || Path.join(default, "structure.sql")
418418

419-
args = [
420-
"--execute",
421-
"SET FOREIGN_KEY_CHECKS = 0; SOURCE #{path}; SET FOREIGN_KEY_CHECKS = 1",
422-
"--database",
423-
config[:database]
424-
]
425-
426-
case run_with_cmd("mysql", config, args) do
427-
{_output, 0} -> {:ok, path}
428-
{output, _} -> {:error, output}
419+
with {:ok, contents} <- File.read(path) do
420+
args = [
421+
"--execute",
422+
"SET FOREIGN_KEY_CHECKS = 0; " <> contents <> "; SET FOREIGN_KEY_CHECKS = 1",
423+
"--database",
424+
config[:database]
425+
]
426+
427+
case run_with_cmd("mysql", config, args) do
428+
{_output, 0} -> {:ok, path}
429+
{output, _} -> {:error, output}
430+
end
429431
end
430432
end
431433

0 commit comments

Comments
 (0)