新聞中心
在服務(wù)器管理和維護(hù)過(guò)程中,我們經(jīng)常會(huì)面對(duì)數(shù)據(jù)庫(kù)連接問(wèn)題。這些問(wèn)題可能會(huì)導(dǎo)致應(yīng)用程序無(wú)法訪問(wèn)數(shù)據(jù)庫(kù),或者是其他應(yīng)用程序出現(xiàn)連接問(wèn)題。為了解決這些問(wèn)題,我們需要了解一些快速修復(fù)數(shù)據(jù)庫(kù)連接的命令,以便在出現(xiàn)問(wèn)題時(shí)及時(shí)解決。

成都創(chuàng)新互聯(lián)從2013年成立,是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元社旗做網(wǎng)站,已為上家服務(wù),為社旗各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
本文將提供一些常見(jiàn)的命令和技巧,以便讓你快速修復(fù)數(shù)據(jù)庫(kù)連接問(wèn)題,為你的服務(wù)器提供更好的支持。
1. 確認(rèn)數(shù)據(jù)庫(kù)服務(wù)器已啟動(dòng)
在處理數(shù)據(jù)庫(kù)連接問(wèn)題之前,首先需要確認(rèn)數(shù)據(jù)庫(kù)服務(wù)器已經(jīng)啟動(dòng)。在大多數(shù)情況下,數(shù)據(jù)庫(kù)服務(wù)器啟動(dòng)時(shí)會(huì)輸出一些提示信息,以便指示其狀態(tài)。
對(duì)于 MySQL 服務(wù)器,可以使用以下命令來(lái)檢查它是否已經(jīng)啟動(dòng):
“`
sudo service mysql status
“`
如果 MySQL 服務(wù)器是運(yùn)行的,它會(huì)輸出以下內(nèi)容:
“`
mysql.service – MySQL database server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-03-14 02:17:25 EDT; 11min ago
Mn PID: 9035 (mysqld)
Tasks: 27 (limit: 4915)
CGroup: /system.slice/mysql.service
└─9035 /usr/in/mysqld –daemonize –pid-file=/run/mysqld/mysqld.pid
“`
2. 檢查數(shù)據(jù)庫(kù)服務(wù)器的端口
如果數(shù)據(jù)庫(kù)服務(wù)器已經(jīng)啟動(dòng),但是應(yīng)用程序無(wú)法連接,這意味著哪個(gè)端口可能會(huì)被阻塞??梢允褂靡韵旅顏?lái)檢查服務(wù)器上的端口:
“`
sudo netstat -lnp | grep mysql
“`
如果服務(wù)器上運(yùn)行的 MySQL 服務(wù)器在3306端口上運(yùn)行,則應(yīng)該看到以下內(nèi)容:
“`
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 9035/mysqld
“`
這表示端口正在監(jiān)聽(tīng)并且可以接受連接,如果沒(méi)有則可能會(huì)被阻塞,請(qǐng)檢查相關(guān)防火墻規(guī)則。
3. 確認(rèn)數(shù)據(jù)庫(kù)和表是否存在
如果應(yīng)用程序啟動(dòng)后仍然不能連接數(shù)據(jù)庫(kù),則可能是因?yàn)閿?shù)據(jù)庫(kù)或表不存在??梢允褂靡韵旅顏?lái)檢查是否存在:
“`
mysql -u username -p
“`
輸入密碼后,可以使用以下命令查看數(shù)據(jù)庫(kù)列表:
“`
show databases;
“`
然后使用以下命令查看數(shù)據(jù)庫(kù)內(nèi)表列表:
“`
use [database_name];
show tables;
“`
如果數(shù)據(jù)庫(kù)或表不存在,請(qǐng)使用以下命令創(chuàng)建它們:
“`
CREATE DATABASE [database_name];
“`
“`
USE [database_name];
CREATE TABLE [table_name] ( … );
“`
4. 使用命令更新數(shù)據(jù)庫(kù)連接
如果數(shù)據(jù)庫(kù)連接仍然無(wú)法正常工作,則可以嘗試使用一些命令更新它。以下是一些最常見(jiàn)的命令:
“`
SET GLOBAL max_allowed_packet=1073741824;
“`
這將設(shè)置更大允許的數(shù)據(jù)包大小為1GB,從而解決一些連接問(wèn)題。
“`
SET GLOBAL innodb_file_per_table=1;
“`
這將設(shè)置使用InnoDB引擎創(chuàng)建的表的每個(gè)表包含自己的.ibd文件,有時(shí)這是必要的,特別是當(dāng)你需要將表從一個(gè)數(shù)據(jù)庫(kù)服務(wù)器遷移到另一個(gè)時(shí)。
“`
SET GLOBAL innodb_flush_log_at_trx_commit=2;
“`
如果 InnoDB 表性能緩慢,則可以嘗試對(duì) innodb_flush_log_at_trx_commit 設(shè)置級(jí)別 2,以減少硬盤(pán) IO 操作,提高性能。
5. 重新啟動(dòng)服務(wù)器
如果上述所有命令都無(wú)效,最后的解決方案是重新啟動(dòng)服務(wù)器。更好在重新啟動(dòng)之前先嘗試停止所有應(yīng)用程序,這可以避免數(shù)據(jù)損壞和應(yīng)用程序崩潰。
“`
sudo reboot
“`
這將重新啟動(dòng)服務(wù)器并重置所有連接,確保數(shù)據(jù)庫(kù)連接問(wèn)題已得到解決。
本文提供了一些最常見(jiàn)的命令和技巧,以便幫助你快速解決數(shù)據(jù)庫(kù)連接問(wèn)題。遵循這些提示和技巧,可以確保你的服務(wù)器得到更佳支持和維護(hù),以提供更佳的應(yīng)用程序性能和安全性。
相關(guān)問(wèn)題拓展閱讀:
- DB數(shù)據(jù)庫(kù)文件連接失敗怎么修復(fù),救急?。。?/li>
- mysql運(yùn)行一段時(shí)間,TOMCAT服務(wù)器就會(huì)一直報(bào)這個(gè)錯(cuò)誤,修改了MYSQL數(shù)據(jù)庫(kù)的配置,但沒(méi)有用,在線等
DB數(shù)據(jù)庫(kù)文件連接失敗怎么修復(fù),救急?。。?/h3>
舉報(bào)違規(guī)逗巖拆檢舉侵權(quán)投訴|:49 提問(wèn)者采納 天天愛(ài)答題,20元話費(fèi)等你拿~這包括實(shí)例范圍的元數(shù)據(jù)(例如登錄帳戶)、 端點(diǎn)、鏈接服務(wù)器和系統(tǒng)配置設(shè)置。此外,master數(shù)據(jù)庫(kù)還記錄了所有其他數(shù)據(jù)庫(kù)的 存在、數(shù)據(jù)庫(kù)文件的位置以及SQLServer 的初始化信息。因此,如果master數(shù)據(jù)庫(kù) 不可用,則SQLServer 無(wú)法啟動(dòng)。在SQLServer中,系統(tǒng)對(duì)象不再存儲(chǔ)在master 數(shù)據(jù)庫(kù)中,而是存儲(chǔ)在mssqlsystemresource數(shù)據(jù)庫(kù)中。 master數(shù)據(jù)庫(kù)對(duì)系統(tǒng)來(lái)說(shuō)很關(guān)鍵,因此總是要保存它的當(dāng)前副本。創(chuàng)建另一個(gè)數(shù)據(jù)庫(kù), 改變配置值,修改登錄賬戶這樣的操作都會(huì)修改master數(shù)據(jù)庫(kù),所以總是應(yīng)該在完成 這些操作之后備份master數(shù)據(jù)庫(kù)。master數(shù)據(jù)庫(kù)本身不大,做一次備份很快,建議經(jīng) 常做master數(shù)據(jù)庫(kù)的備份。 由于master數(shù)據(jù)庫(kù)還記錄啟動(dòng)服務(wù)器實(shí)例所需要的初始化信息,每個(gè)其他數(shù)據(jù)庫(kù)的主文 件位置。master數(shù)據(jù)庫(kù)是SQLServer啟動(dòng)的時(shí)候打開(kāi)的之一個(gè)數(shù)據(jù)庫(kù)。SQLServer是從 master數(shù)據(jù)庫(kù)找到的其他數(shù)據(jù)庫(kù)的信息。如果master數(shù)據(jù)庫(kù)存在問(wèn)題,整個(gè)SQLServer 都無(wú)法正常啟動(dòng)。 如果說(shuō)是master數(shù)據(jù)庫(kù)嚴(yán)重?fù)p壞,如果有備份直接還原master數(shù)據(jù)庫(kù)即可。如果沒(méi)有備 份,則需要重山棗建master數(shù)據(jù)庫(kù)。重建master數(shù)據(jù)庫(kù)將使所有的系統(tǒng)數(shù)據(jù)庫(kù)恢復(fù)到原始狀 態(tài)。重建master數(shù)據(jù)庫(kù)會(huì)刪除并重建msdb數(shù)據(jù)庫(kù)。這將導(dǎo)致丟失所有計(jì)劃信息以及備份 和還原歷史記錄。重建master數(shù)據(jù)庫(kù)之后,SQLServer數(shù)據(jù)庫(kù)就好比重新安裝后一樣, 所有用戶信息都會(huì)丟失,用戶數(shù)據(jù)庫(kù)需要重新附加,SQLServer任務(wù)和計(jì)劃都要重建。 因此重建master數(shù)據(jù)庫(kù)是個(gè)萬(wàn)不得已的選擇。 在執(zhí)行任何語(yǔ)句或系統(tǒng)過(guò)程來(lái)更改master數(shù)據(jù)庫(kù)中的信息以后,應(yīng)備份master數(shù)據(jù)庫(kù). 建議不要再master數(shù)據(jù)庫(kù)中創(chuàng)建用戶對(duì)象 導(dǎo)致master數(shù)據(jù)庫(kù)棗兆更新并要求備份的操作類(lèi)型包括: 1,創(chuàng)建或刪除用戶數(shù)據(jù)庫(kù) 2,添加或刪除文件和文件組 3,添加登陸或其他登陸安全相關(guān)操作 4,更改服務(wù)器范圍的配置選項(xiàng)或者數(shù)據(jù)庫(kù)配置選項(xiàng) 5,創(chuàng)建或刪除邏輯備份文件 6,配置用于分布式查詢和遠(yuǎn)程調(diào)用的服務(wù)器,如添加鏈接服務(wù)器或遠(yuǎn)程登錄 恢復(fù)master數(shù)據(jù)庫(kù)使用的還是RESTORE指令.還原master數(shù)據(jù)庫(kù)后SQLServer實(shí)例將自動(dòng)停止. 關(guān)于如何恢復(fù)master數(shù)據(jù)庫(kù),在后面將單獨(dú)寫(xiě)一篇博客. model數(shù)據(jù)庫(kù) 用作在SQLServer實(shí)例上創(chuàng)建的所有數(shù)據(jù)庫(kù)的模板。因?yàn)槊看螁?dòng)SQLServer 時(shí)都 會(huì)創(chuàng)建tempdb,所以model數(shù)據(jù)庫(kù)必須始終存在于 SQLServer系統(tǒng)中。 創(chuàng)建數(shù)據(jù)庫(kù)是model數(shù)據(jù)庫(kù)是SQLSERVER使用的模板.model數(shù)據(jù)庫(kù)里的全部?jī)?nèi)容都會(huì)被復(fù) 制到新的數(shù)據(jù)庫(kù).所以這個(gè)數(shù)據(jù)庫(kù)不建議做任何修改.除非是有目的的要建立一些模板. 雖然這個(gè)數(shù)據(jù)庫(kù)的內(nèi)容一般不會(huì)發(fā)生改變,但是在SQLServer啟動(dòng)的時(shí)候要使用model數(shù) 據(jù)庫(kù)某些設(shè)置創(chuàng)建新的tempdb。如果沒(méi)有tempdb,SQLServer無(wú)法啟動(dòng)。因此model數(shù)據(jù)庫(kù) 必須存在SQLServer系統(tǒng)中。這個(gè)數(shù)據(jù)庫(kù)也要有備份。 還原model數(shù)據(jù)庫(kù)與對(duì)用戶數(shù)據(jù)庫(kù)執(zhí)行完整的數(shù)據(jù)庫(kù)還原相同 tempdb數(shù)據(jù)庫(kù) tempdb系統(tǒng)數(shù)據(jù)庫(kù)是一個(gè)全局資源,可供連接到SQLServer 實(shí)例的所有用戶使用,并 可用于保存下列各項(xiàng): 顯式創(chuàng)建的臨時(shí)用戶對(duì)象,例如全局或局部臨時(shí)表、臨時(shí)存儲(chǔ)過(guò)程、表變量或游標(biāo)。 SQLServer數(shù)據(jù)庫(kù)引擎創(chuàng)建的內(nèi)部對(duì)象,例如,用于存儲(chǔ)假脫機(jī)或排序的中間結(jié)果的工作表。 由使用已提交讀(使用行版本控制隔離或快照隔離事務(wù))的數(shù)據(jù)庫(kù)中數(shù)據(jù)修改事務(wù)生成的行版本。 由數(shù)據(jù)修改事務(wù)為實(shí)現(xiàn)聯(lián)機(jī)索引操作、多個(gè)活動(dòng)的結(jié)果集(MARS)以及AFTER 觸發(fā)器等功能而生 成的行版本。 tempdb中的操作是最小日志記錄操作。這將使事務(wù)產(chǎn)生回滾。每次啟動(dòng)SQLServer 時(shí)都會(huì)重新 創(chuàng)建tempdb,從而在系統(tǒng)啟動(dòng)時(shí)總是保持一個(gè)干凈的數(shù)據(jù)庫(kù)副本。在斷開(kāi)聯(lián)接時(shí)會(huì)自動(dòng)刪除臨時(shí) 表和存儲(chǔ)過(guò)程,并且在系統(tǒng)關(guān)閉后沒(méi)有活動(dòng)連接。因此tempdb中不會(huì)有什么內(nèi)容從一個(gè)SQLServer 會(huì)話保存到另一個(gè)會(huì)話。不允許對(duì)tempdb進(jìn)行備份和還原操作。 資源數(shù)據(jù)庫(kù)(mssqlsystemresource) 資源數(shù)據(jù)庫(kù)是一個(gè)隱藏?cái)?shù)據(jù)庫(kù)??蓤?zhí)行系統(tǒng)對(duì)象(入系統(tǒng)存儲(chǔ)過(guò)程和功能)都保存在這里。創(chuàng)建這個(gè)數(shù) 據(jù)庫(kù)是為了快速安全的升級(jí)。如果沒(méi)有人可以訪問(wèn)到這個(gè)數(shù)據(jù)庫(kù),也就沒(méi)有人可以改變它。簡(jiǎn)單的用 新的資源數(shù)據(jù)庫(kù)替換掉舊的資源數(shù)據(jù)庫(kù),就可以升級(jí)到新的,包括新系統(tǒng)對(duì)象服務(wù)包。不能使用任何 正常方法查看該數(shù)據(jù)庫(kù)。但這個(gè)數(shù)據(jù)庫(kù)任然需要磁盤(pán)空間。 mssqlsystemresource數(shù)據(jù)庫(kù)從來(lái)不做修改,理論上不用備份。 msdb數(shù)據(jù)庫(kù) 由SQLServer代理用于計(jì)劃警報(bào)和作業(yè),也可以由其他功能(如ServiceBroker 和數(shù)據(jù)庫(kù)郵件)使用 SQLServer將在msdb數(shù)據(jù)庫(kù)中自動(dòng)維護(hù)一份完整的在線備份與還原歷史記錄。這些信息包括執(zhí)行備份一 方的名稱(chēng),備份時(shí)間和用來(lái)存儲(chǔ)備份的備份設(shè)備。SQLServerManagementStudio利用這些信息提出 計(jì)劃以還原數(shù)據(jù)庫(kù)并應(yīng)用事務(wù)日志備份。 默認(rèn)情況下msdb使用簡(jiǎn)單恢復(fù)模式。 還原msdb數(shù)據(jù)庫(kù)與對(duì)用戶數(shù)據(jù)庫(kù)執(zhí)行完整的數(shù)據(jù)庫(kù)還原相同
mysql運(yùn)行一段時(shí)間,TOMCAT服務(wù)器就會(huì)一直報(bào)這個(gè)錯(cuò)誤,修改了MYSQL數(shù)據(jù)庫(kù)的配置,但沒(méi)有用,在線等
一、Can’t connect to MySQL server on ‘localhost’ (10061)
翻譯:不能連接到 localhost 上的mysql
分析:這說(shuō)明“l(fā)ocalhost”計(jì)算機(jī)是存在的,但在這臺(tái)機(jī)器上卻沒(méi)提供MySQL服務(wù)。
需要啟動(dòng)這臺(tái)機(jī)器上的MySQL服務(wù),如果機(jī)子負(fù)載太高沒(méi)空相應(yīng)請(qǐng)求也會(huì)產(chǎn)生這個(gè)錯(cuò)誤。
解決:既然沒(méi)有納森啟動(dòng)那就去啟動(dòng)這臺(tái)機(jī)子的mysql。如果啟動(dòng)不成功,多數(shù)是因?yàn)槟愕膍y.ini配置的有問(wèn)題。重新配置其即可。
如果覺(jué)得mysql負(fù)載異常,可以到mysql/bin 的目錄下執(zhí)行mysqladmin -uroot -p123 processlist來(lái)查看mysql當(dāng)前的進(jìn)程。
二、Unknown MySQL Server Host ‘localhosadst’ (11001)
翻譯:未知的MySQL服務(wù)器 localhosadst
分析:服務(wù)器 localhosasdst 不存在?;蛘吒緹o(wú)法連接
解決:仔細(xì)檢查自己論壇下面的 ./config.inc.php 找到$dbhost重新設(shè)置為正確的mysql 服務(wù)器地址。
三、Access denied for user: ‘roota@localhost’ (Using password: YES)
翻譯:用戶 roota 訪問(wèn) localhost 被拒絕(沒(méi)有允許通過(guò))
分析:造成這個(gè)錯(cuò)誤一般數(shù)據(jù)庫(kù)用戶名和密碼相對(duì)mysql服務(wù)器不正確
解決:仔細(xì)檢查自己論壇下面的 ./config.inc.php 找到$dbuser、$dbpw核實(shí)后重新設(shè)置保存即可。
四、Access denied for user: ‘red@localhost’ to database ‘newbbs’
翻譯:用戶 red 在localhost 服務(wù)器上沒(méi)有權(quán)限操作數(shù)據(jù)庫(kù)newbbs
分析:這個(gè)提示和問(wèn)題三是不同的。那個(gè)是在連接數(shù)據(jù)庫(kù)的時(shí)候就被阻止了,而這個(gè)錯(cuò)誤是在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作時(shí)引起的。比如在select update等等。這個(gè)是因?yàn)樵撚脩魶](méi)有操作數(shù)據(jù)庫(kù)相應(yīng)的權(quán)力。比如select 這個(gè)操作在mysql.user.Select_priv里記錄 Y 可以操作N 不可灶茄瞎以操作。
解決:如果是自己的獨(dú)立主機(jī)那么更新mysql.user 的相應(yīng)用戶記錄,比如這里要更新的用戶為red ?;蛘咧苯有薷?./config.inc.php 為其配隱空置一個(gè)具有對(duì)數(shù)據(jù)庫(kù)操作權(quán)限的用戶
或者通過(guò)如下的命令來(lái)更新授權(quán)grant all privileges on dbname.* to ‘user’@’localhost’ identified by ‘password’
提示:更新了mysql庫(kù)中的記錄一定要重啟mysql服務(wù)器才能使更新生效
FLUSH PRIVILEGES;
五、No Database Selected
翻譯:沒(méi)有數(shù)據(jù)庫(kù)被選擇上
分析:產(chǎn)生的原因有兩種
config.inc.php 里面$dbname設(shè)置的不對(duì)。致使數(shù)據(jù)庫(kù)根本不存在,所以在 $db->select_db($dbname); 時(shí)返回了false
和上面問(wèn)題四是一樣的,數(shù)據(jù)庫(kù)用戶沒(méi)有select權(quán)限,同樣會(huì)導(dǎo)致這樣的錯(cuò)誤。當(dāng)你發(fā)現(xiàn)config.inc.php的設(shè)置沒(méi)有任何問(wèn)題,但還是提示這個(gè)錯(cuò)誤,那一定就是這種情況了。
解決:對(duì)癥下藥
打開(kāi)config.inc.php 找到$dbname核實(shí)重新配置并保存
同問(wèn)題四的解決方法
六、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)
翻譯:不能打開(kāi)xxx_forums.MYI
問(wèn)題分析:
這種情況是不能打開(kāi) cdb_forums.MYI 造成的,引起這種情況可能的原因有:
1、服務(wù)器非正常關(guān)機(jī),數(shù)據(jù)庫(kù)所在空間已滿,或一些其它未知的原因,對(duì)數(shù)據(jù)庫(kù)表造成了損壞。
2、類(lèi) unix 操作系統(tǒng)下直接將數(shù)據(jù)庫(kù)文件拷貝移動(dòng)會(huì)因?yàn)槲募膶俳M問(wèn)題而產(chǎn)生這個(gè)錯(cuò)誤。
解決方法:
1、修復(fù)數(shù)據(jù)表
可以使用下面的兩種方式修復(fù)數(shù)據(jù)表:(之一種方法僅適合獨(dú)立主機(jī)用戶)
1)使用 myisamchk ,MySQL 自帶了專(zhuān)門(mén)用戶數(shù)據(jù)表檢查和修復(fù)的工具 —— myisamchk 。更改當(dāng)前目錄到 MySQL/bin 下面,一般情況下只有在這個(gè)下面才能運(yùn)行 myisamchk 命令。常用的修復(fù)命令為:myisamchk -r 數(shù)據(jù)文件目錄/數(shù)據(jù)表名.MYI;
2)通過(guò) phpMyAdmin 修復(fù), phpMyAdmin 帶有修復(fù)數(shù)據(jù)表的功能,進(jìn)入到某一個(gè)表中后,點(diǎn)擊“操作”,在下方的“表維護(hù)”中點(diǎn)擊“修復(fù)表”即可。
注意:以上兩種修復(fù)方式在執(zhí)行前一定要備份數(shù)據(jù)庫(kù)。
2、修改文件的屬組(僅適合獨(dú)立主機(jī)用戶)
1)復(fù)制數(shù)據(jù)庫(kù)文件的過(guò)程中沒(méi)有將數(shù)據(jù)庫(kù)文件設(shè)置為 MySQL 運(yùn)行的帳號(hào)可讀寫(xiě)(一般適用于 Linux 和 FreeBSD 用戶)。
七、Table ‘test.xxx_sessions’ doesn’t exist
翻譯:xxxxx表不存在
分析:在執(zhí)行sql語(yǔ)句時(shí)沒(méi)有找到表,比如:SELECT * FROM xxx_members WHERE uid=’XX’ 這里如果表xxx_members不存在于$dbname庫(kù)里,那么就會(huì)提示這個(gè)錯(cuò)誤。具體可分為以下三種情況來(lái)討論:
安裝插件或者h(yuǎn)ack時(shí)修改了程序文件,而忘記了對(duì)數(shù)據(jù)庫(kù)作相應(yīng)的升級(jí)。
后臺(tái)使用了不完全備份,導(dǎo)入數(shù)據(jù)時(shí)沒(méi)有導(dǎo)入到已經(jīng)安裝了相應(yīng)版本的論壇的數(shù)據(jù)庫(kù)中。
解決: 同樣對(duì)癥下藥,不同的原因不同的處理方法。
仔細(xì)對(duì)照插件作者提供的安裝說(shuō)明,把遺漏的對(duì)數(shù)據(jù)庫(kù)的操作補(bǔ)上,如果仍然不能解決問(wèn)題,那么應(yīng)該懷疑該插件的可用性了。去咨詢一下插件作者,或者將其卸載。
不要張冠李戴,多大的腳就穿多大的鞋。總之使得程序文件和數(shù)據(jù)庫(kù)配套即可.
八、Unknown column ‘column_name’ in ‘field list’
翻譯:未知的字段名 column_name
分析:在執(zhí)行sql語(yǔ)句是出現(xiàn)了指定表中沒(méi)有的字段名稱(chēng),就會(huì)出現(xiàn)這個(gè)錯(cuò)誤。具體導(dǎo)致的原因可分為以下兩種
安裝插件或者h(yuǎn)ack時(shí)修改了程序文件,而忘記了對(duì)數(shù)據(jù)庫(kù)作相應(yīng)的升級(jí)。
程序文件和數(shù)據(jù)庫(kù)不配套,比如d2.5的數(shù)據(jù)庫(kù)配置給d4.1的程序來(lái)用肯定會(huì)出現(xiàn)這個(gè)錯(cuò)誤。
解決: 導(dǎo)致的原因和問(wèn)題八的1和 3是相同的,所以解決方法也一樣。
九、You have an error in your SQL syntax
翻譯:有一個(gè)語(yǔ)法錯(cuò)誤在你的sql中
分析:論壇標(biāo)準(zhǔn)的程序是沒(méi)有sql語(yǔ)法錯(cuò)誤的。所以造成這個(gè)錯(cuò)誤的原因一般就兩類(lèi)
安裝插件或擅自修改程序。
不同的數(shù)據(jù)庫(kù)版本數(shù)據(jù)庫(kù)導(dǎo)出導(dǎo)入,比如MySQL4.1的數(shù)據(jù)在導(dǎo)出的語(yǔ)句包含了MySQL4.0沒(méi)有的功能,像字符集的設(shè)定,這時(shí)如果將這些sql導(dǎo)入到MySQL4.0的時(shí)候就會(huì)產(chǎn)生sql語(yǔ)法錯(cuò)誤。
解決:
仔細(xì)檢查看到底是哪里的錯(cuò)誤,將其修正,實(shí)在不行就用標(biāo)準(zhǔn)程序把出錯(cuò)的程序替換。
在數(shù)據(jù)庫(kù)備份的時(shí)候要留意,如果不打算倒入到其他版本的mysql中則不用特殊考慮,反之要特殊的設(shè)定。使用DZ4.1的后臺(tái)數(shù)據(jù)備份,可以按照提示去設(shè)定想要的格式。獨(dú)立主機(jī)的也可以在到處的時(shí)候?qū)⑵鋵?dǎo)出為mysql4.0的格式。
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse > test.sql
十、Duplicate entry ‘xxx’ for key 1
翻譯:插入 xxx 使索引1重復(fù)
分析:索引如果是primary unique這兩兩種,那么數(shù)據(jù)表的數(shù)據(jù)對(duì)應(yīng)的這個(gè)字段就必須保證其每條記錄的唯一性。否則就會(huì)產(chǎn)生這個(gè)錯(cuò)誤。
一般發(fā)生在對(duì)數(shù)據(jù)庫(kù)寫(xiě)操作的時(shí)候,例如Discuz!4.1論壇程序要求所有會(huì)員的用戶名username必須唯一,即username的索引是 unique,這時(shí)如果強(qiáng)行往cdb_members表里插入一個(gè)已有的username的記錄就會(huì)發(fā)上這個(gè)錯(cuò)誤,或者將一條記錄的username更新 為已有的一個(gè)username。
改變表結(jié)構(gòu)的時(shí)候也有可能導(dǎo)致這個(gè)錯(cuò)誤。例如 Discuz!4.0論壇的數(shù)據(jù)庫(kù)中cdb_members.username 的索引類(lèi)型是index這個(gè)時(shí)候是允許有相同username的記錄存在的,在升級(jí)到4.1的時(shí)候,因?yàn)橐獙sername的索引由原來(lái)的index變 為unique。如果這時(shí)cdb_members里存在有相同的username的記錄,那么就會(huì)引發(fā)這個(gè)錯(cuò)誤。
導(dǎo)出數(shù)據(jù)據(jù)時(shí)有時(shí)會(huì)因?yàn)橐恍┰颍ㄗ髡吣壳斑€不清楚)導(dǎo)致同一條記錄被重復(fù)導(dǎo)出,那么這個(gè)備份數(shù)據(jù)在導(dǎo)入的時(shí)候出現(xiàn)這個(gè)錯(cuò)誤是在所難免的了。
修改了auto_increment的值,致使“下一個(gè) Autoindex”為一條已經(jīng)存在的記錄
解決: 兩種思路,一是破壞掉唯一性的索引。二是把重復(fù)的數(shù)據(jù)記錄干掉,只保留一條。很顯然之一種思路是不可取的。那么按照二的思路我們得出以下幾種解決方法,對(duì)應(yīng)上面的i ii iii
略
按照錯(cuò)誤提示里的信息到數(shù)據(jù)庫(kù)中將重復(fù)的記錄刪除,僅保留一條即可。之后繼續(xù)執(zhí)行升級(jí)操作。
這種情況發(fā)生的概率很小,可以用文本編輯器打開(kāi)備份文檔,查找重復(fù)的信息。將其多余的拿掉,僅保留一條即可。
查詢出表中auto_increment更大的一條記錄,設(shè)置auto_incerment比其大一即可。
PS:repaire table “表名“,可以暫時(shí)解決問(wèn)題。
十一、 Duplicate key name ‘xxx’
翻譯:索引名重復(fù)
分析:要?jiǎng)?chuàng)建的索引已經(jīng)存在了,就會(huì)引發(fā)這個(gè)錯(cuò)誤,這個(gè)錯(cuò)誤多發(fā)生在升級(jí)的時(shí)候??赡苁且呀?jīng)升級(jí)過(guò)的,重復(fù)升級(jí)引起的錯(cuò)誤。也有可能是之前用戶擅自加的索引,剛好與升級(jí)文件中的所以相同了。
解決: 看看已經(jīng)存在的索引和要添加的索引是否一樣,一樣的話可以跳過(guò)這條sql語(yǔ)句,如果不一樣那么現(xiàn)刪除已存在的所以,之后再執(zhí)行。
十二、 Duplicate column name ‘xxx’
翻譯:字段名xxx重復(fù)
分析:添加的字段xxx已經(jīng)存在,多發(fā)生在升級(jí)過(guò)程中,與問(wèn)題十二的產(chǎn)生是一樣的。
解決: 看一下已經(jīng)存在的字段是否和將要添加的字段屬性完全相同,如果相同則可以跳過(guò)不執(zhí)行這句sql,如果不一樣則刪除掉這個(gè)字段。之后繼續(xù)執(zhí)行升級(jí)程序。
十三、 Table ‘xxx’ already exists
翻譯:數(shù)據(jù)表xxx已經(jīng)存在
分析:xxx表已經(jīng)存在于庫(kù)中,再次試圖創(chuàng)建這個(gè)名字的表就會(huì)引發(fā)這個(gè)錯(cuò)誤。同樣多發(fā)生在論壇的升級(jí)中。類(lèi)似于問(wèn)題十二。
解決: 看看已經(jīng)存在的表是否和將要?jiǎng)?chuàng)建的表完全一樣,一樣的話可以跳過(guò)不執(zhí)行這個(gè)sql,否則請(qǐng)將存在的表先刪除,之后繼續(xù)執(zhí)行升級(jí)文件。
十四、 Can’t create database ‘xxx’. Database exists
翻譯:不能創(chuàng)建數(shù)據(jù)庫(kù)xxx,數(shù)據(jù)庫(kù)已經(jīng)存在
分析:一個(gè)mysql下面的數(shù)據(jù)庫(kù)名稱(chēng)必須保證唯一性,否則就會(huì)有這個(gè)錯(cuò)誤。
解決:把已經(jīng)存在的數(shù)據(jù)庫(kù)改名或者把將要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)改名,總之不讓他們的名稱(chēng)沖突。
十五、 小結(jié)(針對(duì)問(wèn)題 11\12\13\14\15)
此類(lèi)問(wèn)題錯(cuò)誤提示中都暗藏一個(gè)關(guān)鍵詞duplicate(重復(fù))
那么對(duì)于mysql數(shù)據(jù)庫(kù)來(lái)說(shuō)什么東西是不能重復(fù)的呢?
數(shù)據(jù)庫(kù) database
同一個(gè)數(shù)據(jù)庫(kù)下數(shù)據(jù)表 table
同一個(gè)數(shù)據(jù)表下字段 column
同一個(gè)數(shù)據(jù)表下索引 key
同一個(gè)數(shù)據(jù)表在索引唯一(UNIQUE PRIMARY)的情況下記錄中的這些字段不可以重復(fù)
十六、Unknown system variable ‘NAMES’
翻譯:未知的系統(tǒng)變量NAMES
分析:Mysql版本不支持字符集設(shè)定,此時(shí)強(qiáng)行設(shè)定字符集就會(huì)出現(xiàn)這個(gè)錯(cuò)誤。
解決: 將sql語(yǔ)句中的SET NAMES ‘xxx’ 語(yǔ)句去掉
十七、 Lost connection to MySQL server during query
翻譯:MySQL服務(wù)器失去連接在查詢期間
分析:遠(yuǎn)程連接數(shù)據(jù)庫(kù)是有時(shí)會(huì)有這個(gè)問(wèn)題。MySQL服務(wù)器在執(zhí)行一條sql語(yǔ)句的時(shí)候失去了連接造成的。
解決: 一般不需要怎么去處理,如果頻繁的出現(xiàn)那么考慮改善硬件環(huán)境。
十八、User ‘red’ has exceeded the ‘max_updates’ resource (current value: 500)
翻譯:msql用戶red已經(jīng)超過(guò)了’max_updates’(更大更新次數(shù)),’max_questions’(更大查詢次數(shù)),’max_connections’(更大連接數(shù)),當(dāng)前設(shè)定為500
分析:在mysql數(shù)據(jù)庫(kù)的下有一個(gè)庫(kù)為mysql,它其中有一個(gè)表為user這里面的紀(jì)錄每一條都對(duì)應(yīng)為一個(gè)mysql用戶的授權(quán)。其中字段 max_questions max_updates max_connections分別記錄著更大查詢次數(shù) 更大更新數(shù) 更大連接數(shù),當(dāng)目前的任何一個(gè)參數(shù)大于任何一個(gè)設(shè)定的值就會(huì)產(chǎn)生這個(gè)錯(cuò)誤。
解決: 獨(dú)立主機(jī)用戶可以直接修改授權(quán)表。修改完之后重啟mysql或者跟新授權(quán)表,進(jìn)入mysql提示符下執(zhí)行
FLUSH PRIVILEGES;
記得后面要有分號(hào)’;’
虛擬主機(jī)的用戶如果總是出現(xiàn)這個(gè)問(wèn)題可找空間商協(xié)商解決。
十九、Too many connections (1040)鏈接過(guò)多
翻譯:達(dá)到更大連接數(shù)
問(wèn)題分析:
連接數(shù)超過(guò)了mysql設(shè)置的值,與max_connections 和wait_timeout 都有關(guān)系。wait_timeout的值越大,連接的空閑等待就越長(zhǎng),這樣就會(huì)造成當(dāng)前連接數(shù)越大
解決方法:
1.虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商優(yōu)化 MySQL 服務(wù)器的配置;
2.獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員優(yōu)化 MySQL 服務(wù)器的配置,可參考:
修改 MySQL 配置文件 my.ini 或者 my.cnf 中的參數(shù):
max_connections= 1000
wait_timeout = 10
修改后重啟 MySQL ,如果經(jīng)常性的報(bào)此錯(cuò)誤,請(qǐng)做一下服務(wù)器的整體優(yōu)化。
二十、There is no such grant defined for user ‘%s’ on host ‘%s’
錯(cuò)誤編號(hào):1141
問(wèn)題分析:
MySQL 當(dāng)前用戶無(wú)權(quán)訪問(wèn)數(shù)據(jù)庫(kù)。
解決方法:
1、虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商,確認(rèn)給你提供的帳號(hào)是否有授權(quán)數(shù)據(jù)庫(kù)的權(quán)限。
2、獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員,確認(rèn)給您提供的數(shù)據(jù)庫(kù)帳號(hào)是否有管理此數(shù)據(jù)庫(kù)的權(quán)限。
二十一、Error on rename of ‘%s’ to ‘%s’ (errno: %d)
error.:1025
問(wèn)題分析:
請(qǐng)檢查一下您的程序是否有修改數(shù)據(jù)庫(kù)表名的語(yǔ)句。
解決方法:
1.請(qǐng)檢查您的程序中哪些地方需要修改數(shù)據(jù)庫(kù)表名;
2.如果您的實(shí)際應(yīng)用確實(shí)需要修改到數(shù)據(jù)庫(kù)表名的話,請(qǐng)聯(lián)系空間商或者服務(wù)器管理員給您開(kāi)放修改庫(kù)名的權(quán)限和服務(wù)器本身是否正常。
二十二、Error reading file ‘%s’ (errno: %d)
error.:1023
問(wèn)題分析:
數(shù)據(jù)庫(kù)文件不能被讀取。
解決方法:
1.虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商查看數(shù)據(jù)庫(kù)是否完好。
2.獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員檢查一下 MySQL 本身是否正常, MySQL 是否可以讀取文件,Linux 用戶可以檢查一下 MySQL 的數(shù)據(jù)庫(kù)文件的屬主是否正確以及本身的文件是否損壞。
二十三、Host ‘*****’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’
error.:1129
問(wèn)題分析:
數(shù)據(jù)庫(kù)出現(xiàn)異常,請(qǐng)重啟數(shù)據(jù)庫(kù)。
解決方法:
1. 由于存在很多連接錯(cuò)誤,主機(jī)’****’被屏蔽,虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商處理,獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員,在 MySQL 的命令控制臺(tái)下執(zhí)行’mysqladmin flush-hosts’解除屏蔽即可,或者重啟 MySQL 數(shù)據(jù)庫(kù)
二十四、dropping database (can’t delete ‘%s’, errno: %d)
error.:1009
問(wèn)題分析:
不能刪除數(shù)據(jù)庫(kù)文件,導(dǎo)致刪除數(shù)據(jù)庫(kù)失敗。
解決方法:
1.檢查您使用的數(shù)據(jù)庫(kù)管理帳號(hào)是否有權(quán)限刪除數(shù)據(jù)。
2.檢查數(shù)據(jù)庫(kù)是否存在。
二十五、Got error 28 from table handler
error.:1030
問(wèn)題分析:
數(shù)據(jù)庫(kù)所在磁盤(pán)空間已滿。
解決方法:
1.虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商增加 MySQL 所在的磁盤(pán)空間或者清理一些無(wú)用文件;
2.獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員增加 MySQL 所在的磁盤(pán)空間或者清理一些無(wú)用文件
二十六、Can’t create a new thread; if you are not out of available memory, you can consult the manual for a possible OS-dependent bug。
error.:11/35
問(wèn)題分析:
數(shù)據(jù)庫(kù)服務(wù)器問(wèn)題,數(shù)據(jù)庫(kù)操作無(wú)法創(chuàng)建新線程。一般是兩個(gè)原因:
1.服務(wù)器系統(tǒng)內(nèi)存溢出。
2.環(huán)境軟件損壞或系統(tǒng)損壞。
解決方法:
1.虛擬主機(jī)用戶請(qǐng)聯(lián)系下空間商數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存和系統(tǒng)是否正常。
2.獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員檢查服務(wù)器的內(nèi)存和系統(tǒng)是否正常,如果服務(wù)器內(nèi)存緊張,請(qǐng)檢查一下哪些進(jìn)程消耗了服務(wù)器的內(nèi)存,同時(shí)考慮是否增加服務(wù)器的內(nèi)存來(lái)提高整個(gè)的負(fù)載能力。
二十七、Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client
error.:1251
問(wèn)題分析:
如果你升級(jí) MySQL 到 4.1 以上版本后遇到以上問(wèn)題,請(qǐng)先確定你的 MySQL Client 是 4.1 或者更高版本( Windows 下有問(wèn)題你就直接跳到下面看解決方法了,因?yàn)?MySQL 在 Windows 是 client 和 server 一起裝上了的)。
解決方法:
1. Windows 平臺(tái)
主要是改變連接 MySQL 的帳戶的加密方式,MySQL 4.1/5.0 是通過(guò) PASSWORD 這種方式加密的??梢酝ㄟ^(guò)以下兩種方法得到解決:
1) mysql->SET PASSWORD FOR ‘some_user’@’some_host’=OLD_PASSWORD(‘new_password’);
2) mysql->UPDATE mysql.user SET Password=OLD_PASSWORD(‘new_password’) WHERE Host=’some_host’ AND User=’some_user’;
2. Linux/Unix 平臺(tái)
Linux 平臺(tái)下首先確定是否安裝過(guò) MySQL 的客戶端,這個(gè)用 rpm 安裝很簡(jiǎn)單,Linux 代碼為:
rpm -ivh MySQL-client-4.1.15-0.i386.rpm
然后在編譯 php 的時(shí)候要加上:
–with-mysql=/your/path/to/mysql
一般情況下都可以解決。如果還出現(xiàn)這種錯(cuò)誤,可以按照下面的方法來(lái)做:
mysql->SET PASSWORD FOR ‘some_user’@’some_host’=OLD_PASSWORD(‘new_password’);
mysql->UPDATE mysql.user SET Password=OLD_PASSWORD(‘new_password’) WHERE Host=’some_host’ AND User=’some_user’;
二十八、Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’
error.:2023
問(wèn)題分析:
出現(xiàn)這個(gè)錯(cuò)誤一般情況下是因?yàn)橄旅鎯蓚€(gè)原因:
1.MySQL 服務(wù)器沒(méi)有開(kāi)啟。
2.MySQL 服務(wù)器開(kāi)啟了,但不能找到 socket 文件。
解決方法:
1.虛擬主機(jī)用戶,請(qǐng)聯(lián)系空間商確認(rèn)數(shù)據(jù)庫(kù)是否正常啟動(dòng)。
2.獨(dú)立主機(jī)用戶,請(qǐng)檢查一下 MySQL 服務(wù)是否已經(jīng)開(kāi)啟,沒(méi)有開(kāi)啟,請(qǐng)啟動(dòng) MySQL 服務(wù);如果已經(jīng)開(kāi)啟,并且是 Linux 系統(tǒng),請(qǐng)檢查一下 MySQL 的 socket 的路徑,然后打開(kāi) config.inc.php 找到
$dbhost = ‘localhost’; 在 hostname 后面加冒號(hào)‘:’和 MySQL 的 socket 的路徑。
比如 MySQL 服務(wù)器為 localhost
MySQL 的 socket 的路徑為 /tmp/mysql.sock
那么就改成如下:
$dbhost = ‘localhost:/temp/mysql.sock’;
二十九、Can’t connect to MySQL server on ‘localhost’
error.:2023
問(wèn)題分析:
MySQL 服務(wù)沒(méi)有啟動(dòng),一般是在異常的情況下 MySQL 無(wú)法啟動(dòng)導(dǎo)致的,比如無(wú)可用的磁盤(pán)空間,my.ini 里 MySQL 的 basedir 路徑設(shè)置錯(cuò)誤等。
解決方法:
1.檢查磁盤(pán)空間是否還有剩余可用空間,盡量保持有足夠的磁盤(pán)空間可用。
2.檢查 my.ini 里的 basedir 等參數(shù)設(shè)置是否正確,然后重新啟動(dòng)下 MySQL 服務(wù)。
三十、Lost connection to MySQL server during query
error.:2023
問(wèn)題分析:
數(shù)據(jù)庫(kù)查詢過(guò)程中丟失了與 MySQL 服務(wù)器的連接。
解決方法:
1.請(qǐng)確認(rèn)您的程序中是否有效率很低的程序,比如某些插件,可以卸載掉插件,檢查一下服務(wù)器是否正常;
2.服務(wù)器本身資源緊張,虛擬主機(jī)用戶請(qǐng)聯(lián)系空間商確認(rèn),獨(dú)立主機(jī)用戶請(qǐng)聯(lián)系服務(wù)器管理員,檢查一下服務(wù)器是否正常。
三十一、Got a packet bigger than \’max_allowed_packet\’ bytes
錯(cuò)誤編號(hào):1153
問(wèn)題分析:調(diào)整了 Mantis 的上傳附件的大小卻沒(méi)有調(diào)整 MySQL 的配置文件。
解決辦法:
1、獨(dú)立主機(jī)用戶請(qǐng)按照以下方法調(diào)整:
查找 MySQL 的配置文件(my.cnf 或者 my.ini)
在 部分添加一句(如果存在,調(diào)整其值就可以):
max_allowed_packet=10M
重啟 MySQL 服務(wù)就可以了。這里設(shè)置的是 10MB。
服務(wù)器數(shù)據(jù)庫(kù)連接修復(fù)命令的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于服務(wù)器數(shù)據(jù)庫(kù)連接修復(fù)命令,快速修復(fù)服務(wù)器數(shù)據(jù)庫(kù)連接的命令大,DB數(shù)據(jù)庫(kù)文件連接失敗怎么修復(fù),救急!??!,mysql運(yùn)行一段時(shí)間,TOMCAT服務(wù)器就會(huì)一直報(bào)這個(gè)錯(cuò)誤,修改了MYSQL數(shù)據(jù)庫(kù)的配置,但沒(méi)有用,在線等的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
文章標(biāo)題:快速修復(fù)服務(wù)器數(shù)據(jù)庫(kù)連接的命令大(服務(wù)器數(shù)據(jù)庫(kù)連接修復(fù)命令)
當(dāng)前網(wǎng)址:http://fisionsoft.com.cn/article/dpghdcd.html


咨詢
建站咨詢
