在測試與運維場景中,往往面臨無法使用圖形化客戶端(Navicat、DataGrip 等)的服務器環境。掌握 MySQL 命令行導入 SQL 腳本,是每位測試工程師與開發者的必備硬技能。
mysql -u root -p123456 含義(用戶 root,密碼 123456)idomysqltest.sql)szmzcz)mysql -uroot -p123456 -D szmzcz < idomysqltest.sql
參數解析:
| 參數 | 含義 | |
|---|---|---|
-u | 用戶名 | |
-p | 密碼(生產環境建議交互式輸入,避免歷史記錄洩露) | |
-D | 指定默認數據庫(等同于 USE db_name;) | |
< | Shell 重定向:將文件內容作為標準輸入傳給 mysql 進程 |
| 報錯現象 | 原因 | 解決方案 |
|---|---|---|
| ERROR 1049 (42000): Unknown database | 目標庫不存在 | 先執行 CREATE DATABASE szmzcz; |
| ERROR 1064 (42000): Syntax error | SQL 語法錯誤/版本不兼容 | 檢查腳本語法;確認 MySQL 版本兼容性 |
| ERROR 2006 (HY000): MySQL server has gone away | 數據包過大/超時 | 調大 max_allowed_packet、wait_timeout |
| ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes | 單條 SQL 超過限制 | 同上,或拆分大 SQL |
# 進入數據庫檢查表數量
mysql -uroot -p123456 -D szmzcz -e "SHOW TABLES;"
# 檢查核心表行數
mysql -uroot -p123456 -D szmzcz -e "SELECT COUNT(*) FROM core_table;"
SOURCE /path/to/file.sql;cat data.sql | mysql -uroot -p db_name(適合壓縮文件 zcat data.sql.gz | mysql ...)mysql -uroot -p db_name < backup.dump(標準備份還原流程)命令行導入雖「樸素」,卻是最通用、最高效、最穩健的方式。建議將常用命令封裝為 Shell 腳本(import.sh),參數化數據庫名、文件路徑,納入部署流程標準化。善於思考、積累工具箱,才能在受限環境下游刃有餘。