Имеется винда с установленной HeidiSQL в которой есть база mysql. Стоит задача написать скрипты для снятия дампа и разворачивания (упростить работу пользователей и не давать права на базу). Так как в HeidiSQL есть mysqldump, mysql и прочие ехе-шники, то работаю через них.
Снятие дампа
работает без нареканий.
Загрузка дампа
В части последней команды не работает. Выскакивает окно командной строки на пол секунды с каким то многочисленным выводом (предполагаю хелп от mysql) и закрывается. То есть база удаляется, создается, но дамп не заливается
При этом данный подход
отрабатывает без нареканий.
Прошу объяснить чем эти два подхода принципиально отличаются, что второй работает, а первый нет.
Пинать в сторону "AutoIT умеет работать с mysql напрямую" пока не нужно, оставлю это как запасной вариант.
Снятие дампа
Код:
$iReturn = RunWait ('C:\Program Files\MariaDB 10.0\bin\mysqldump.exe --user=root --password=12345 --port=3308 --single-transaction --databases psbase --result-file=' & $sDir )
работает без нареканий.
Загрузка дампа
Код:
$dump1 = FileOpenDialog("Требуется выбрать файл с дампом базы данных", @WorkingDir, "Дамп MYSQL (*.sql)", 1+2)
RunWait ('C:\Program Files\MariaDB 10.0\bin\mysqladmin.exe --user=root --password=12345 --port=3308 --force drop psbase')
RunWait ('C:\Program Files\MariaDB 10.0\bin\mysqladmin.exe --user=root --password=12345 --port=3308 create psbase')
RunWait ("C:\Program Files\MariaDB 10.0\bin\mysql.exe --user=root --password=12345 --port=3308 --force psbase < " & $dump1 )
В части последней команды не работает. Выскакивает окно командной строки на пол секунды с каким то многочисленным выводом (предполагаю хелп от mysql) и закрывается. То есть база удаляется, создается, но дамп не заливается
При этом данный подход
Код:
Run ("C:\Windows\System32\cmd.exe")
WinWaitActive("[CLASS:ConsoleWindowClass]", "", 5)
Send("c:")
Send("{ENTER}")
Send("cd \")
Send("{ENTER}")
Send("cd +'Program Files\MariaDB 10.0\bin+' ")
Send("{ENTER}")
Send("mysql.exe --user=root --password=12345 --port=3308 --force psbase < " & $dump1)
Send("{ENTER}")
отрабатывает без нареканий.
Прошу объяснить чем эти два подхода принципиально отличаются, что второй работает, а первый нет.
Пинать в сторону "AutoIT умеет работать с mysql напрямую" пока не нужно, оставлю это как запасной вариант.