MySQL CLI (интерфейс командной строки), как и другие CLI или программы оболочки, включая базы данных (psql Postgres, sqlite3 SQLite, sqlcmd SQL Server, sqlplus Oracle), langauges (python.exe, perl.exe, php.exe, r .exe) и другие являются исполняемыми файлами (.exe), которые не запускаются с графическим интерфейсом, как большинство программных файлов .exes, но вызывают сеанс внутри окна терминала.
Для запуска таких сеансов CLI используются интерпретаторы командной строки, такие как Windows PowerShell и Cmd.exe или терминал Bash Unix (MacOS / Linux). По сути, есть два способа запуска команд MySQL:
Вызов mysql.exe
с аргументами без открытия продолжительного сеанса.
Запустите сеанс mysql и выполните отдельные вызовы.
Ваша проблема заключается в том, что вы пытаетесь связать две вышеупомянутые команды, когда вы пытаетесь вызвать из командной строки mysql.exe
с аргументами внутри mysql.exe
или запустить его аргументы верхнего уровня в сеансе. Внутри CLI синтаксический анализатор интерпретирует только специальные команды MySQL, такие как source
и прямые запросы SQL, которые не выполняются, mysql
, вызовы или аргументы соединения (-h, -u
) без вызывающей команды оболочки: \!
.
Просто используйте соответствующие вызовы вне сеанса CLI:
cd C:\amp64\bin\mysql\mysql5.7.23\bin
mysql -h localhost -u bookorama -p < bookorama.sql
Или внутри сеанса CLI:
cd C:\amp64\bin\mysql\mysql5.7.23\bin
mysql -h localhost -u bookorama -p
mysql> source bookorama.sql
Сказав это, вы можете сделать обратное.
Выполнение командных запросов снаружи:
mysql -h localhost -u bookorama -p -e "source bookorama.sql"
Вызов терминальных звонков внутри:
mysql> \! mysql -h localhost -u bookorama -pXXXXX < bookorama.sql