Editing
排除 MySQL 技術疑難問題
(section)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== 資源和環境錯誤 == === 無法存取 MySQL 日誌 === 版本:XAMPP 5.6.15-1,運行於{{Mac}} 原因: * 錯誤日誌只能由名為 {{kbd | key=mysql}} 的用戶訪問<ref>打開位於以下位置的 MySQL 設定檔案:/Applications/XAMPP/xamppfiles/etc/my.cnf <pre> # MySQL 伺服器 [mysqld] user = mysql </pre></ref> 解決方案 <ref>[http://computerplumber.com/2009/01/using-the-chmod-command-effectively/ 有效使用 CHMOD 命令 @ Computer Plumber]</ref>: <pre> 找到 MySQL 日誌的路徑 $ ls /Applications/XAMPP/xamppfiles/var/mysql/*.local.err 找出 MySQL 日誌的檔案名稱,例如:XXXMacBook-Pro.local.err 設置日誌的權限 $ sudo chmod 774 /Applications/XAMPP/xamppfiles/var/mysql/XXXMacBook-Pro.local.err </pre> === 錯誤代碼: 13 拒絕存取 === 當我嘗試啟動服務,執行 {{kbd | key=<nowiki>mysqld.exe --datadir=..\data --console</nowiki>}} 後出現此訊息。(MySQL版本:5.5.5-10.0.12-MariaDB 在 {{Win}}) <pre> > mysqld.exe --datadir=..\data --console 180430 10:33:38 [錯誤] mysqld.exe: 找不到檔案 'C:\MariaDB_10.0\bin\..\data\aria_log_control' (錯誤代碼: 13 "拒絕存取") 180430 10:33:38 [錯誤] mysqld.exe: 嘗試使用 aria 控制檔案 'C:\MariaDB_10.0\bin\..\data\aria_log_control' 時出錯 '無法打開檔案' 180430 10:33:38 [錯誤] 插件 'Aria' 初始化函數返回錯誤。 180430 10:33:38 [錯誤] 插件 'Aria' 註冊為儲存引擎失敗。 180430 10:33:38 [注意] InnoDB: 使用互斥鎖來計數緩衝池頁面 180430 10:33:38 [注意] InnoDB: InnoDB 記憶體堆疊已停用 180430 10:33:38 [注意] InnoDB: 互斥鎖和 rw_locks 使用 Windows 交錯函數 180430 10:33:38 [注意] InnoDB: 壓縮表使用 zlib 1.2.3 180430 10:33:38 [注意] InnoDB: 未使用 CPU crc32 指令 180430 10:33:38 [注意] InnoDB: 初始化緩衝池,大小 = 4.0G 180430 10:33:38 [注意] InnoDB: 完成緩衝池初始化 180430 10:33:38 [錯誤] InnoDB: 無法以讀寫模式打開 .\ibdata1 180430 10:33:38 [錯誤] InnoDB: 系統表空間必須可寫! 180430 10:33:38 [錯誤] 插件 'InnoDB' 初始化函數返回錯誤。 180430 10:33:38 [錯誤] 插件 'InnoDB' 註冊為儲存引擎失敗。 180430 10:33:38 [注意] 插件 'FEEDBACK' 已停用。 180430 10:33:38 [錯誤] 未知/不支持的儲存引擎: innodb 180430 10:33:38 [錯誤] 終止 180430 10:33:38 [注意] mysqld.exe: 關機完成 </pre> 解決方案: 以管理員特權開啟命令行。(如何操作: [https://www.howtogeek.com/194041/how-to-open-the-command-prompt-as-administrator-in-windows-8.1/ 如何在 Windows 8 或 10 中以管理員身份開啟命令提示符]) === 錯誤!:SQLSTATE[HY000]:一般錯誤:3 寫入檔案 'xxx\Temp\xxx.tmp' 時出錯(錯誤代碼:28 - 設備上沒有剩餘空間) === 錯誤訊息範例:錯誤!:SQLSTATE[HY000]:一般錯誤:3 寫入檔案 'C:\Windows\SERVIC~2\NETWOR~1\AppData\Local\Temp\MY2713.tmp' 時出錯(錯誤代碼:28 - 設備上沒有剩餘空間) 條件:檢查 mysql {{kbd | key=tmpdir}} 文件夾的磁碟可用空間 解決方案:增加 mysql {{kbd | key=tmpdir}} 文件夾的可用空間。或者使用另一個硬碟更改 mysql {{kbd | key=tmpdir}} 文件夾,該驅動器應具有更多的可用空間<ref>[https://stackoverflow.com/questions/11990887/changing-the-tmp-folder-of-mysql 更改 mysql 的 tmp 文件夾 - Stack Overflow]</ref>。 * 檢查當前的 mysql {{kbd | key=tmpdir}} 文件夾。查詢語法 {{kbd | key=<nowiki>SHOW VARIABLES LIKE 'tmpdir';</nowiki>}}。 ** 在 {{Win}} 上,預設的臨時文件夾<ref>[https://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/where-is-the-temporary-folder 臨時文件夾在哪裡?- Microsoft Community]</ref> 是 {{kbd | key=<nowiki>%TMP%</nowiki>}} = {{kbd | key=<nowiki>%USERPROFILE%\AppData\Local\Temp</nowiki>}}。 ** 在 {{Linux}} 上,預設的臨時文件夾可能是 {{kbd | key=<nowiki>/tmp</nowiki>}} * 編輯 [https://dev.mysql.com/doc/refman/5.7/en/option-files.html mysql 配置文件] <pre> [mysqld] tmpdir=X:/temp </pre> * 重啟 MySQL 服務 驗證 * 查詢語法 {{kbd | key=<nowiki>SHOW VARIABLES LIKE 'tmpdir';</nowiki>}} 來驗證 mysql 配置文件的修改。 === mysqldump: 寫入時遇到 errno 32 錯誤 === 錯誤情況 <pre> $ mysqldump -h localhost -u root -p --force --single-transaction --default-character-set=utf8 --quick mytable | pv | gzip -c > mytable.sql.gz </pre> 遇到錯誤訊息: <pre> -bash: pv: 命令找不到 ... mysqldump: 寫入時遇到 errno 32 錯誤 </pre> 根本原因 * 未安裝 pv * 輸入指令檢查 pv 是否安裝 {{kbd | key=which pv}} * 輸入指令安裝 pv:{{kbd | key=sudo yum -y install pv}} <ref>[https://installati.one/centos/7/pv/ 如何在 CentOS 7 上安裝 pv | Installati.one]</ref> 參考資料 * [https://mysqldump.guru/mysqldump-got-errno-32-on-write.html mysqldump: 寫入時遇到 errno 32 錯誤 | mysqldump.guru] === 錯誤 1205: 鎖定等待超時,嘗試重新啟動事務 === 解決方案:<ref>[https://stackoverflow.com/questions/5836623/getting-lock-wait-timeout-exceeded-try-restarting-transaction-even-though-im mysql - 獲得 "鎖定等待超時,嘗試重新啟動事務" 即使我沒有使用事務 - Stack Overflow]</ref> # {{kbd | key=<nowiki>SHOW OPEN TABLES WHERE in_use > 0;</nowiki>}}<ref>[https://dev.mysql.com/doc/refman/5.7/en/show-open-tables.html MySQL :: MySQL 5.7 參考手冊 :: 13.7.5.24 SHOW OPEN TABLES 語法]</ref> # {{kbd | key=<nowiki>SHOW [FULL] PROCESSLIST;</nowiki>}}<ref>[https://dev.mysql.com/doc/refman/5.7/en/show-processlist.html MySQL :: MySQL 5.7 參考手冊 :: 13.7.5.29 SHOW PROCESSLIST 語法]</ref> # {{kbd | key=<nowiki>KILL <process id>;</nowiki>}}<ref>[https://dev.mysql.com/doc/refman/5.7/en/kill.html MySQL :: MySQL 5.7 參考手冊 :: 13.7.6.4 KILL 語法]</ref> 相關文章 * [https://errerrors.blogspot.com/2022/10/how-to-fix-lock-wait-timeout-exceeded-try-restarting-transaction-on-mysql.html 解決 MySQL 錯誤 1205: 鎖定等待超時,嘗試重新啟動事務] === 錯誤 1206: 鎖的總數量超過鎖表的大小 === 訊息:錯誤代碼:1206。鎖的總數量超過鎖表的大小 當前狀態<ref>[https://dev.mysql.com/doc/refman/8.0/en/show-variables.html MySQL :: MySQL 8.0 參考手冊 :: 13.7.6.39 SHOW VARIABLES 語法]</ref>: * Keywin {{kbd | key = <nowiki>SHOW VARIABLES LIKE 'innodb_buffer_pool_size';</nowiki>}}。如果返回 {{kbd | key=8388608}},意味著 {{kbd | key=8388608}} 位元組 ≅ 8MB。 解決方案: * 增加 {{kbd | key = innodb_buffer_pool_size}} 例如 {{kbd | key =<nowiki>SET GLOBAL innodb_buffer_pool_size=402653184;</nowiki>}}(402653184 位元組 ~ 400MB。預設值是 8MB。) * 減少查詢數據的大小 進一步閱讀: * [http://stackoverflow.com/questions/5696857/how-to-change-value-for-innodb-buffer-pool-size-in-mysql-on-mac-os innodb - 如何在 Mac OS 上改變 MySQL 的 innodb_buffer_pool_size 的值? - Stack Overflow]。 * [https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool-resize.html MySQL :: MySQL 5.7 參考手冊 :: 14.6.3.2 配置 InnoDB 緩衝池大小] === PHP 嚴重錯誤:在使用 adminer 導入 SQL.GZ 文件時,允許的記憶體大小耗盡 === 解決方案:使用基本的 mysqldump 命令來生成備份文件。然後使用 mysql 命令導入備份。 === 資料庫所在硬碟空間不足的狀況 === [http://errerrors.blogspot.com/2016/07/mysql.html Err: 解決 MySQL 資料庫所在硬碟空間不足的狀況]
Summary:
Please note that all contributions to LemonWiki共筆 are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
LemonWiki:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Current events
Recent changes
Random page
Help
Categories
Tools
What links here
Related changes
Special pages
Page information