Mysql导入命令在cmd运行时有效,但直接传递参数时无效。

3

根据文档,导入命令最基本的形式为:

mysql.exe < example.sql

在Windows系统中,通过命令行运行该程序可以正常工作。但是如果使用< example.sql参数启动mysql.exe进程,该程序将无法运行。例如,创建一个快捷方式并设置其路径为mysql.exe < example.sql是无效的,它只会打印mysql.exe的帮助信息。

值得注意的是,我第一次注意到这个问题是因为尝试运行以下C#代码:

new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "mysql.exe",
                Arguments = "< example.sql",
            }
        }.Start();

你是指在mysql.exe中使用< example.sql参数的含义是什么? - jai dutt
< example.sql 不是 mysql.exe 的参数,< 表示重定向操作符,因此文件 example.sql 的内容被重定向到 mysql.exe 中;我猜你需要将文件名更改为 cmd.exe,并将参数更改为 /C "mysql.exe < example.sql";考虑指定所有文件的完整绝对路径... - aschipfl
@aschipfl 你知道将SQL文件作为参数传递给mysql.exe的方法吗?另外,你可以将你的评论转化为答案。它回答了我的问题。 - Gokhan Kurt
很抱歉,我无法帮助您解决 mysql.exe 的问题。请稍等片刻,让我的评论转化为答案... - aschipfl
2个回答

2

这部分的< example.sql并不是mysql.exe的参数;<符号表示重定向操作符,所以文件example.sql的内容被重定向到mysql.exe

我猜您需要把文件名改为cmd.exe,参数改为/C "mysql.exe < example.sql"。考虑对所有文件指定完整的绝对路径。


0

我不在Windows上工作,但我假设你最好填写完整路径 + 数据库主机名信息:

C:\mysql\directory\bin\mysql -h {hostname} -u {username} -p {databasename} < example.sql

...还有 example.sql 文件的完整路径;每个路径都用引号括起来,以避免出现空格和其他特殊字符的问题... - aschipfl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接