mysqldump问题:“ - default-extra-file”选项未按预期工作

时间:2010-10-01 02:41:53

标签: mysql windows mysqldump

我从Windows命令行运行以下命令来备份我的数据库:

...\right_path\mysqldump --add-drop-database --databases my_database_name
                         --defaults-extra-file=d:\1.cnf

其中d:\1.cnf包含以下内容:

[client]
user="my_user"
password="my_password"

不幸的是,我收到以下错误消息:

mysqldump: unknown variable 'defaults-extra-file=d:\1.cnf'

如果我这样做:

...\right_path\mysqldump --add-drop-database --databases my_database_name
                         --user="my_user" --password="my_password"

它按预期工作。

我做错了什么?

4 个答案:

答案 0 :(得分:90)

我找到答案:--defaults-extra-file必须是第一个选项。这按预期工作:

...\right_path\mysqldump --defaults-extra-file=d:\1.cnf
                         --add-drop-database --databases my_database_name

答案 1 :(得分:1)

我意识到这是特定于Linux的,但我的搜索将我带到了这里。

我正在使用bitnami的LAMP堆栈,并发现他们的“mysqldump”实际上是一个脚本:

LD_LIBRARY_PATH=/opt/lampstack-5.5.3-0/mysql/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
case "$@" in
  *--no-defaults*)
    exec $0.bin "$@"
    exit
esac
exec $0.bin --defaults-file=/opt/lampstack-5.5.3-0/mysql/my.cnf "$@"

似乎不允许传递--defaults-file ...并且正常工作(根据此处接受的答案)。

答案 2 :(得分:1)

供以后参考:

接受的答案是正确的,必须将scale_x_continuous(breaks = scales::pretty_breaks(n = 10),limits=c(-1,290)) 选项放在第一个位置。

要与容器一起尝试,一种选择是:

--defaults-extra-file

别忘了确保凭据安全且不使用VCS:

$ docker network create dbnet
$ docker run --network dbnet -it --rm \
    --name db -e MYSQL_ROOT_PASSWORD=example \
    mysql echo "[client]\npassword=example\n">.mydbcreds.cnf  
$ docker run --network dbnet -it --rm \
    --name db-client -v "$PWD:/app/" mysql \
    mysql --defaults-extra-file=/app/.mydbcreds.cnf \
        --host db --user root \
        -e "SHOW SCHEMAS;"

该文件可以包含所有连接参数(主机,用户等)。

不幸的是,此文件不能包含数据库名称,这对于每个环境具有不同的文件来说真是太棒了。 现在,在命令中设置的文件名和数据库名称中,所有用于连接的内容都可以使用。

答案 3 :(得分:0)

也遇到这个问题。发现还有另一种情况可能导致--defaults-extra-file选项无法识别。

在脚本中更改IFS时,可能会遇到此问题。解决方法是在执行mysql语句之前重置IFS。

供参考。