2017-06-06 344 views
-1

我有太多搜索論壇可以重複測試結果。 [問題] 是什麼導致MySQL失敗和/或目錄名稱的CMD解析錯誤? [NSIS腳本如下]NSIS - 使用nsEXEC :: ExecToStack進行重定向的錯誤MySql ---爲什麼ExecToLog vs ExecToStack出現了不同的錯誤

importdbs: 
DetailPrint "IMPORT SQL files to db=$dbname User=$login Pswd=$password" 
StrCpy $1 "$folder\bin\mysql.exe" 
StrCpy $2 "$srcepath$srcescript" 

DetailPrint "MySqlDir: $1 input: $2" 
ClearErrors 

nsExec::ExecToStack /OEM '"$SYSDIR\cmd.exe" /C "$1" -u$root -p -v -D $dbname < "$2" > "c:\_temp-c\ckprnout.txt"' 

Pop $3 # Get Results 

StrCmp "error" $3 +1 +2 
DetailPrint "IMPORT return-error: $3" 
DetailPrint "IMPORT return-OK: $3" 

[結果(TEST01)從NSIS日誌面板]:

IMPORT SQL文件DB =演示用戶=根PSWD = ...。輸入密碼...。 MySqlDir下:C:\ PROGRA〜1 \的MySQL \ MySQL服務器5.7 \ BIN \ 的mysql.exe輸入:C:_temp-C \轉儲\自卸20170604-demo.sql

IMPORT返回OK:1 < =錯誤

[注:] 改變nsExec :: ExecToStack ....到nscExec :: ExecToLog .... 息率不同錯誤

[結果(test02)從nsis日誌面板]:

IMPORT SQL文件到db = demo User = root Pswd = ...。輸入密碼...。 MySqlDir下:C:\ PROGRA〜1 \的MySQL \ MySQL服務器5.7 \ BIN \ 的mysql.exe輸入:C:_temp-C \轉儲\自卸20170604-demo.sql

「C:\ PROGRA〜 1 \ MySQL \ MySQL'不被識別爲內部或外部命令,可操作程序或批處理文件。

+0

你知道我不可能調試它嗎?什麼是'$文件夾'?請創建一個不涉及MySQL的[Minimal,Complete和Verifiable示例](https://stackoverflow.com/help/mcve)。 「不被識別爲內部或外部命令...」錯誤來自cmd.exe。 – Anders

+0

你說[這裏](https://stackoverflow.com/questions/44190117/nsis-compile-mysql-not-recognised-as-operable-program-why-does-nsexecexect#comment75635518_44190117)在幾天的評論以前你要去別的地方,現在你又回過頭來問同樣的問題了!你顯然沒有學到任何關於提出好問題的知識,這個問題將得到與以前(幾乎重複)問題相同的待遇:零答案! – Anders

回答

0

也許這會有所幫助。希望對你有效。

importdbs: 
DetailPrint "IMPORT SQL files to db=$dbname User=$login Pswd=$password" 
StrCpy $1 "$folder\bin\mysql.exe" 
StrCpy $2 "$srcepath$srcescript" 

System::Call 'kernel32::GetLongPathName(t r1, t .r3, i ${NSIS_MAX_STRLEN}) i .r4' 
StrCmp $4 error +2 
StrCpy $1 $3 

DetailPrint "MySqlDir: $1 input: $2" 
ClearErrors 

ReadEnvStr $R0 COMSPEC 
ExecDos::Exec /TOSTACK `"$R0" /c "$1" -u$root -p -v -D $dbname < "$2" > "c:\_temp-c\ckprnout.txt"` 

Pop $5 # Get Results 

StrCmp "error" $5 +1 +2 
DetailPrint "IMPORT return-error: $5" 
DetailPrint "IMPORT return-OK: $5" 
相關問題