MySQLDUMP和CMD/Powershell之间的区别

MySQLDUMP和CMD/Powershell之间的区别,powershell,cmd,mysqldump,Powershell,Cmd,Mysqldump,当我在powershell中使用此命令进行mysql转储时,会得到一个不可用且更大的文件。当我从CMD窗口使用相同的命令时,当我使用GUI工具进行导出时,我会得到一个大小相同的SQL文件,并且我可以使用GUI和命令行来恢复备份。使用powershell进行转储时,它拒绝恢复备份 我使用这个命令 E:\Script\mysqldump.exe-u root-ppassword-h 127.0.0.1 xticket--锁表--禁用键--添加删除表--例程--数据库>\\location\backu

当我在powershell中使用此命令进行mysql转储时,会得到一个不可用且更大的文件。当我从CMD窗口使用相同的命令时,当我使用GUI工具进行导出时,我会得到一个大小相同的SQL文件,并且我可以使用GUI和命令行来恢复备份。使用powershell进行转储时,它拒绝恢复备份

我使用这个命令 E:\Script\mysqldump.exe-u root-ppassword-h 127.0.0.1 xticket--锁表--禁用键--添加删除表--例程--数据库>\\location\backup.sql

这是我打算使用的powershell脚本:

$Date = [Int] (Get-Date).DayOfWeek
$Su = 0
$Mo = 1
$Tu = 2
$We = 3
$Th = 4
$Fr = 5
$Sa = 6

If ($Date -eq $Mo) 
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\mobackup.sql
}

ElseIf ($Date -eq $Tu) 
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\tubackup.sql
}

ElseIf ($Date -eq $We)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\webackup.sql
}

ElseIf ($Date -eq $Th)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\thbackup.sql
}

ElseIf ($Date -eq $Fr)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\frbackup.sql
}

ElseIf ($Date -eq $Sa)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\sabackup.sql
}

ElseIf ($Date -eq $Su)
{
 & "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases > \\location\subackup.sql
}

首先,您可以用更简单的方式重写脚本:

$dayOfWeek = (Get-Date).DayOfWeek.ToString().ToLower().substring(0, 2)
$backupFile = $dayOfWeek + "backup.sql"

& "E:\Script\mysqldump.exe" -u root -ppassword -h 127.0.0.1 xticket --lock-tables --disable-keys --add-drop-table --routines --databases | Out-File $backupFile -Encoding ASCII

请注意,我使用了Out文件,而不是管道到文件。我怀疑您看到的行为差异是由于文件编码(ASCII/UTF8)造成的。然而,我不确定这是你的问题。我的机器上没有安装mysqldump,我无法测试它。纯粹是猜测。

谢谢,大卫,成功了。问题确实是文件编码