自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

10種常見(jiàn)的MySQL錯(cuò)誤,你可中招?

譯文
數(shù)據(jù)庫(kù) MySQL
如果未能對(duì) MySQL 8 進(jìn)行恰當(dāng)?shù)呐渲?,您非但可能遇到無(wú)法順利訪問(wèn)、或調(diào)用 MySQL 的窘境,而且還可能給真實(shí)的應(yīng)用生產(chǎn)環(huán)境帶來(lái)巨大的影響。本文列舉了十種 MySQL 常見(jiàn)的錯(cuò)誤及其解決方案。

【51CTO.com快譯】如果未能對(duì) MySQL 8 進(jìn)行恰當(dāng)?shù)呐渲?,您非但可能遇到無(wú)法順利訪問(wèn)、或調(diào)用 MySQL 的窘境,而且還可能給真實(shí)的應(yīng)用生產(chǎn)環(huán)境帶來(lái)巨大的影響。本文列舉了十種 MySQL 常見(jiàn)的錯(cuò)誤及其解決方案。

[[279559]] 

圖片來(lái)自 Pexels

MySQL 8 是當(dāng)前流行的數(shù)據(jù)庫(kù)引擎之一。在得到正確配置的情況下,它能夠以相對(duì)較低成本的方式,幫助成千上萬(wàn)的數(shù)據(jù)庫(kù)連接到對(duì)應(yīng)的服務(wù)器上。

另外,由于它是一種在業(yè)界被使用多年的常用數(shù)據(jù)庫(kù)工具,因此您不太可能會(huì)遇到某個(gè)服務(wù)器無(wú)法識(shí)別它的情況。

可以說(shuō),您可以將其配置到任何自己希望處理和存儲(chǔ)數(shù)據(jù)的應(yīng)用場(chǎng)景之中。

當(dāng)然,MySQL 8 也并非是完全“開(kāi)箱即用”的,如果您未能對(duì)其進(jìn)行恰當(dāng)?shù)呐渲?,您非但?huì)遇到無(wú)法順利訪問(wèn)、或正確調(diào)用 MySQL 的窘境,而且還可能給真實(shí)的應(yīng)用生產(chǎn)環(huán)境帶來(lái)巨大的影響。

因此,在您碰到某種需要修復(fù)的 MySQL 錯(cuò)誤,決定要在線搜索解決方案之前,請(qǐng)和我一起來(lái)看看如下十種 MySQL 常見(jiàn)錯(cuò)誤,您是否也曾犯過(guò)呢?

錯(cuò)誤 1:拒絕訪問(wèn)(Denied Access)

在我們實(shí)現(xiàn)對(duì)數(shù)據(jù)的任何選擇(SELECT)、插入(INSERT)、更新(UPDATE)、以及刪除(DELETE)之前,我們都需要審查在服務(wù)器上,客戶端程序所使用的數(shù)據(jù)庫(kù)帳號(hào)。

只有獲得了連接許可、以及具有對(duì) MySQL 服務(wù)器進(jìn)行各種操作的相關(guān)權(quán)限,才不會(huì)出現(xiàn)如下圖所示的“拒絕訪問(wèn)”之類錯(cuò)誤。

 

錯(cuò)誤 2:密碼為空或提示輸入

如果用戶端程序被配置為帶有 -p 的選項(xiàng),而在啟動(dòng)時(shí)卻并未設(shè)置相應(yīng)的密碼值,那么 MySQL 客戶端就會(huì)出現(xiàn)如下的提示,并會(huì)被要求輸入密碼:

  

  1. > MySQL -u user_name -p   
  2. Enter password:  

顯然,這是一個(gè)系統(tǒng)庫(kù)層面上的問(wèn)題,并非 MySQL 本身的錯(cuò)誤。簡(jiǎn)單快速的解決方案是:直接將 MySQL 的密碼更改為八位或者更短的字符。

當(dāng)然,您也可以將密碼存儲(chǔ)到某個(gè)備選文件中,以方便讀取。

錯(cuò)誤 3:MySQL 失去服務(wù)器連接

此類情況一般發(fā)生在網(wǎng)絡(luò)環(huán)境不佳的遠(yuǎn)程連接時(shí)。我們一般可以通過(guò)打開(kāi)命令行,手動(dòng)嘗試連接的方式,來(lái)檢驗(yàn)當(dāng)前的狀況。

除了對(duì)網(wǎng)絡(luò)連接狀態(tài)進(jìn)行基本排查之外,您也可以嘗試著通過(guò)修改 MySQL 的最大連接數(shù),來(lái)診斷是否是資源受限的問(wèn)題。

錯(cuò)誤 4:主機(jī)名已被阻止

如果 MySQL 服務(wù)器收到由某個(gè)主機(jī)的應(yīng)用程序所產(chǎn)生的過(guò)多連接數(shù),那么該主機(jī)就會(huì)被數(shù)據(jù)庫(kù)服務(wù)器端所阻斷,進(jìn)而產(chǎn)生如下的錯(cuò)誤:

 

如上圖所示,一旦數(shù)據(jù)庫(kù)接收到太多帶有“max_connect_errors”的失敗請(qǐng)求,MySQL 就會(huì)認(rèn)為前端出現(xiàn)了錯(cuò)誤,并立即阻斷主機(jī)的進(jìn)一步連接,直至有 FILHES HOST 語(yǔ)句或是 mysqladmin flush-host 命令的發(fā)出。

可見(jiàn),對(duì)于由于“host_name”被阻斷的連接錯(cuò)誤,我們需要通過(guò)“mysqladmin flush-hosts”,來(lái)解除此類阻斷。

在服務(wù)器啟動(dòng)之前,您可以通過(guò)設(shè)置如下最大值,來(lái)處置連接中出現(xiàn)的錯(cuò)誤:

  1. > mysqld_safe --max_connect_errors=10000  

當(dāng)然,當(dāng)服務(wù)器正在運(yùn)行的時(shí)候,您也可以按照如下方式進(jìn)行動(dòng)態(tài)調(diào)整:

  1. mysql> SET GLOBAL max_connect_errors=10000;  

錯(cuò)誤 5:內(nèi)存不足

如果 MySQL 的內(nèi)存不足,它將無(wú)法存儲(chǔ)來(lái)自 MySQL 客戶端的所有查詢請(qǐng)求,而且會(huì)在服務(wù)器端拋出如下的錯(cuò)誤:

  1. mysql: Out of memory at line 42, 'malloc.c'   
  2. mysql: needed 8136 bytes (8k), memory in use: 12481367 bytes (12189k)   
  3. ERROR 2008: MySQL client ran out of memory  

為了解決此類問(wèn)題,我們必須首先檢查查詢語(yǔ)句本身是否正確。例如:我們是否確實(shí)期望通過(guò)多行結(jié)果來(lái)回應(yīng)某個(gè)查詢請(qǐng)求?

如果并非如此,則需要予以糾正、或是重新調(diào)整查詢的方式。如果請(qǐng)求本是正確的、且并不需要校正的話,我們可以選擇為 MySQL 添加一個(gè) –quick 的選項(xiàng)。

錯(cuò)誤 6:當(dāng)出現(xiàn)“表已滿”時(shí)

表已滿(table-full)的錯(cuò)誤一般發(fā)生在磁盤可用空間已滿、以及數(shù)據(jù)表已經(jīng)到達(dá)了最大容量,這兩種情形之下。

我們往往可以通過(guò)操作系統(tǒng)的設(shè)置,來(lái)檢測(cè)并限制 MySQL 中的數(shù)據(jù)表作為單個(gè)文件的實(shí)際容量上限。

錯(cuò)誤 7:當(dāng)表 tbl_name 不存在時(shí)

如下錯(cuò)誤表明了:在默認(rèn)數(shù)據(jù)庫(kù)中,某個(gè)給定的數(shù)據(jù)表被視為不存在的情況。

  1. Table 'tbl_name' doesn't exist   
  2. Can't find file: 'tbl_name' (errno: 2)  

 

在此類情況下,用戶將無(wú)法正確地引用到其對(duì)應(yīng)的數(shù)據(jù)表。

而導(dǎo)致該情況的原因在于:雖然 MySQL 服務(wù)器使用了目錄和文件的形式來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)表,但是按照操作系統(tǒng)的文件管理方式,數(shù)據(jù)庫(kù)及其數(shù)據(jù)表的名稱是會(huì)區(qū)分大小寫的。

錯(cuò)誤 8:各種不同步的命令

如果以錯(cuò)誤的順序去調(diào)用客戶端的函數(shù),那么您可能會(huì)接收到同步錯(cuò)誤之類的命令。這就意味著該命令不能夠在客戶端的代碼中被執(zhí)行。

例如,您要執(zhí)行函數(shù) --mysql_use_result()。與此同時(shí),您又嘗試去執(zhí)行另一個(gè)查詢 --mysql_free_result(),那么系統(tǒng)就有可能發(fā)生此類錯(cuò)誤。

說(shuō)白了,如果您要執(zhí)行的兩個(gè)查詢,它們所返回結(jié)果集分別是各自調(diào)用函數(shù)的對(duì)方輸出結(jié)果(并非MySQL的存儲(chǔ)結(jié)果)的話,那么就會(huì)出現(xiàn)不同步的命令現(xiàn)象。

錯(cuò)誤 9:忽略用戶

如果 MySQL 服務(wù)器在啟動(dòng)、或重新加載某些授權(quán)表時(shí),發(fā)現(xiàn)有個(gè)用戶表中的帳戶帶有非法密碼,那么就會(huì)出現(xiàn)如下的錯(cuò)誤:

  1. Found the wrong password for user 'some_user'@'some_host'; ignoring user   

 

顯然,為了解決此類問(wèn)題,我們應(yīng)該為該用戶事先分配一個(gè)新的且有效密碼。

錯(cuò)誤 10:無(wú)法創(chuàng)建/寫入文件

如下的錯(cuò)誤表明:如果在執(zhí)行請(qǐng)求的過(guò)程中,MySQL 不能在臨時(shí)目錄中,為某個(gè)結(jié)果集生成一個(gè)臨時(shí)文件:

  1. Can't create/write to file 'sqla3fe_0.ism'  

通常的解決方案是:在啟動(dòng) MySQL 服務(wù)器時(shí),采用 –tmpdir 選項(xiàng)。其對(duì)應(yīng)的命令如下:

  1. > mysqld --tmpdir C:/temp  

 

結(jié)論

眾所周知,在處理數(shù)據(jù)庫(kù)時(shí),居多的問(wèn)題和錯(cuò)誤都源自查詢操作。上述十種 MySQL 的常見(jiàn)錯(cuò)誤可能只是冰山的一角。

您可能也能羅列出更多實(shí)踐中碰到過(guò)的問(wèn)題。希望上述線索和解決方案能夠?qū)δ兴鶐椭?/p>

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2019-10-08 09:00:00

MySQL數(shù)據(jù)庫(kù)

2019-06-21 10:13:26

JavaScript錯(cuò)誤開(kāi)發(fā)

2019-07-25 08:08:33

SQLJavaMySQL

2015-03-19 11:53:57

JavaSQL數(shù)據(jù)庫(kù)開(kāi)發(fā)

2024-02-20 14:55:51

2018-01-11 16:29:19

錯(cuò)誤HibernateJPQL

2020-05-29 14:30:35

Kubernetes開(kāi)發(fā)錯(cuò)誤

2019-05-31 15:10:33

SQL數(shù)據(jù)庫(kù)MySQL

2020-06-28 10:15:39

架構(gòu)模式軟件

2017-09-14 09:30:38

軟件架構(gòu)模式

2014-03-11 11:33:21

2022-10-19 23:18:27

KubernetesPod錯(cuò)誤

2020-05-25 16:09:17

蘋果iOSBug

2011-04-15 10:19:52

錯(cuò)誤web開(kāi)發(fā)web

2015-11-04 11:38:40

bug程序員

2024-08-20 11:40:24

2019-10-11 15:46:29

編程語(yǔ)言JavaJavaScript

2013-08-15 09:47:07

云遷移云技術(shù)

2015-09-21 09:27:25

數(shù)據(jù)可視化錯(cuò)誤

2011-07-29 13:17:35

HTML 5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)