我需要些帮助。如何在查询中定义MySQL!a!?因为我得到了一些错误结果。
setlocal enableextensions
setlocal enableDelayedExpansion
if !a! EQU !b! (%sql_PATH%\mysql -uroot -e "DROP DATABASE '!a!';")输出是
错误1064 (42000)在第1行:您在SQL语法中有一个错误:检查与您的MySQL服务器版本相对应的手册,以便在第1行使用接近“sample_1 sample_2”的正确的系统税。
我的完整代码
@echo off
setlocal enableextensions
setlocal enableDelayedExpansion
set sql_PATH=C:\wamp\bin\mysql\mysql5.5.24\bin
set sql_DIR=C:\Users\neca\Desktop\db_test\databases\db_name
set "dbUser=root"
set "dbPass="
set LF=^
%empty line%
%empty line%
cd %sql_DIR%
FOR /D %%b IN (*) DO %sql_PATH%\mysql -u%dbUser% -e "CREATE DATABASE IF NOT EXISTS %%b;" && set "b=!b!%%b!LF!"
echo !b!
cd %sql_PATH%
for /f "usebackq delims=" %%a in (`
%sql_PATH%\mysql -u%dbUser% -e "SHOW DATABASES LIKE '%%sample%%';"
^| findstr /l /v /c:"Database" /c:"information_schema"
`) do (set "a=!a!%%a!LF!")
echo !a!
if !a! EQU !b! (%sql_PATH%\mysql -uroot -e "DROP DATABASE !a!;")
pause发布于 2015-02-13 07:30:36
您的问题不是批处理语法或延迟扩展不起作用。您的问题是,变量的内容是一个以行提要分隔的数据库列表,但是DROP DATABASE命令将只接受一个数据库名。您需要遍历数据库列表以删除每个数据库并发出一个DROP命令。
https://stackoverflow.com/questions/28491626
复制相似问题