无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

  • 億恩科技有限公司旗下門戶資訊平臺!
    服務器租用 4元建網站

    【總結 】MySQL常見錯誤分析與解決方法

    MySQL 最流行的關系型數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發(fā)都選擇 MySQL 作為網站數(shù)據(jù)庫。下面筆者將 MySQL 常見錯誤與解決方法做個簡單的總結 ,希望可以幫助到 MySQL的使用者們。
    【總結 】MySQL常見錯誤分析與解決方法
    MySQL 最流行的關系型數(shù)據(jù)庫管理系統(tǒng),由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發(fā)都選擇 MySQL 作為網站數(shù)據(jù)庫。下面筆者將 MySQL 常見錯誤與解決方法做個簡單的總結 ,希望可以幫助到 MySQL的使用者們。

    1、Can’t connect to MySQL server on ‘localhost’ (10061)

    翻譯:不能連接到 localhost 上的mysql

    分析:這說明“l(fā)ocalhost”計算機是存在的,但在這臺機器上卻沒提供MySQL服務。

    需要啟動這臺機器上的MySQL服務,如果機子負載太高沒空相應請求也會產生這個錯誤。

    解決:既然沒有啟動那就去啟動這臺機子的mysql。如果啟動不成功,多數(shù)是因為你的my.ini配置的有問題。重新配置其即可。

    如果覺得mysql負載異常,可以到mysql/bin 的目錄下執(zhí)行mysqladmin -uroot -p123 processlist來查看mysql當前的進程。

    2、Unknown MySQL Server Host ‘localhosadst’ (11001)

    翻譯:未知的MySQL服務器 localhosadst

    分析:服務器 localhosasdst 不存在。或者根本無法連接

    解決:仔細檢查自己論壇下面的 ./config.inc.php 找到$dbhost重新設置為正確的mysql 服務器地址。

    3、Access denied for user: ‘roota@localhost’ (Using password: YES)

    翻譯:用戶 roota 訪問 localhost 被拒絕(沒有允許通過)

    分析:造成這個錯誤一般數(shù)據(jù)庫用戶名和密碼相對mysql服務器不正確

    解決:仔細檢查自己論壇下面的 ./config.inc.php 找到$dbuser、$dbpw核實后重新設置保存即可。

    4、Access denied for user: ‘red@localhost’ to database ‘newbbs’

    翻譯:用戶 red 在localhost 服務器上沒有權限操作數(shù)據(jù)庫newbbs

    分析:這個提示和問題三是不同的。那個是在連接數(shù)據(jù)庫的時候就被阻止了,而這個錯誤是在對數(shù)據(jù)庫進行操作時引起的。比如在select update等等。這個是因為該用戶沒有操作數(shù)據(jù)庫相應的權力。比如select 這個操作在mysql.user.Select_priv里記錄 Y 可以操作N 不可以操作。

    解決:如果是自己的獨立主機那么更新mysql.user 的相應用戶記錄,比如這里要更新的用戶為red ?;蛘咧苯有薷?./config.inc.php 為其配置一個具有對數(shù)據(jù)庫操作權限的用戶

    或者通過如下的命令來更新授權grant all privileges on dbname.* to ‘user’@’localhost’ identified by ‘password’

    提示:更新了mysql庫中的記錄一定要重啟mysql服務器才能使更新生效

    FLUSH PRIVILEGES;

    5、No Database Selected

    翻譯:沒有數(shù)據(jù)庫被選擇上

    分析:產生的原因有兩種

    config.inc.php 里面$dbname設置的不對。致使數(shù)據(jù)庫根本不存在,所以在 $db->select_db($dbname); 時返回了false

    和上面問題四是一樣的,數(shù)據(jù)庫用戶沒有select權限,同樣會導致這樣的錯誤。當你發(fā)現(xiàn)config.inc.php的設置沒有任何問題,但還是提示這個錯誤,那一定就是這種情況了。

    解決:對癥下藥

    打開config.inc.php 找到$dbname核實重新配置并保存

    同問題四的解決方法

    6、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)

    翻譯:不能打開xxx_forums.MYI

    問題分析:

    這種情況是不能打開 cdb_forums.MYI 造成的,引起這種情況可能的原因有:

    1、服務器非正常關機,數(shù)據(jù)庫所在空間已滿,或一些其它未知的原因,對數(shù)據(jù)庫表造成了損壞。

    2、類 unix 操作系統(tǒng)下直接將數(shù)據(jù)庫文件拷貝移動會因為文件的屬組問題而產生這個錯誤。

    解決方法:

    1、修復數(shù)據(jù)表

    可以使用下面的兩種方式修復數(shù)據(jù)表:(第一種方法僅適合獨立主機用戶)

    1)使用 myisamchk ,MySQL 自帶了專門用戶數(shù)據(jù)表檢查和修復的工具 —— myisamchk 。更改當前目錄到 MySQL/bin 下面,一般情況下只有在這個下面才能運行 myisamchk 命令。常用的修復命令為:myisamchk -r 數(shù)據(jù)文件目錄/數(shù)據(jù)表名.MYI;

    2)通過 phpMyAdmin 修復, phpMyAdmin 帶有修復數(shù)據(jù)表的功能,進入到某一個表中后,點擊“操作”,在下方的“表維護”中點擊“修復表”即可。

    注意:以上兩種修復方式在執(zhí)行前一定要備份數(shù)據(jù)庫。

    2、修改文件的屬組(僅適合獨立主機用戶)

    1)復制數(shù)據(jù)庫文件的過程中沒有將數(shù)據(jù)庫文件設置為 MySQL 運行的帳號可讀寫(一般適用于 Linux 和 FreeBSD 用戶)。

    7、Table ‘test.xxx_sessions’ doesn’t exist

    翻譯:xxxxx表不存在

    分析:在執(zhí)行sql語句時沒有找到表,比如:SELECT * FROM xxx_members WHERE uid=’XX’ 這里如果表xxx_members不存在于$dbname庫里,那么就會提示這個錯誤。具體可分為以下三種情況來討論:

    安裝插件或者hack時修改了程序文件,而忘記了對數(shù)據(jù)庫作相應的升級。

    后臺使用了不完全備份,導入數(shù)據(jù)時沒有導入到已經安裝了相應版本的論壇的數(shù)據(jù)庫中。

    解決: 同樣對癥下藥,不同的原因不同的處理方法。

    仔細對照插件作者提供的安裝說明,把遺漏的對數(shù)據(jù)庫的操作補上,如果仍然不能解決問題,那么應該懷疑該插件的可用性了。去咨詢一下插件作者,或者將其卸載。

    不要張冠李戴,多大的腳就穿多大的鞋??傊沟贸绦蛭募蛿?shù)據(jù)庫配套即可.

    8、Unknown column ‘column_name’ in ‘field list’

    翻譯:未知的字段名 column_name

    分析:在執(zhí)行sql語句是出現(xiàn)了指定表中沒有的字段名稱,就會出現(xiàn)這個錯誤。具體導致的原因可分為以下兩種

    安裝插件或者hack時修改了程序文件,而忘記了對數(shù)據(jù)庫作相應的升級。

    程序文件和數(shù)據(jù)庫不配套,比如d2.5的數(shù)據(jù)庫配置給d4.1的程序來用肯定會出現(xiàn)這個錯誤。

    解決: 導致的原因和問題八的1和 3是相同的,所以解決方法也一樣。

    9、You have an error in your SQL syntax

    翻譯:有一個語法錯誤在你的sql中

    分析:論壇標準的程序是沒有sql語法錯誤的。所以造成這個錯誤的原因一般就兩類

    安裝插件或擅自修改程序。

    不同的數(shù)據(jù)庫版本數(shù)據(jù)庫導出導入,比如MySQL4.1的數(shù)據(jù)在導出的語句包含了MySQL4.0沒有的功能,像字符集的設定,這時如果將這些sql導入到MySQL4.0的時候就會產生sql語法錯誤。

    解決:仔細檢查看到底是哪里的錯誤,將其修正,實在不行就用標準程序把出錯的程序替換。

    在數(shù)據(jù)庫備份的時候要留意,如果不打算倒入到其他版本的mysql中則不用特殊考慮,反之要特殊的設定。使用DZ4.1的后臺數(shù)據(jù)備份,可以按照提示去設定想要的格式。獨立主機的也可以在到處的時候將其導出為mysql4.0的格式。

    mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse > test.sql

    10、Duplicate entry ‘xxx’ for key 1

    翻譯:插入 xxx 使索引1重復

    分析:索引如果是primary unique這兩兩種,那么數(shù)據(jù)表的數(shù)據(jù)對應的這個字段就必須保證其每條記錄的唯一性。否則就會產生這個錯誤。

    一般發(fā)生在對數(shù)據(jù)庫寫操作的時候,例如Discuz!4.1論壇程序要求所有會員的用戶名username必須唯一,即username的索引是 unique,這時如果強行往cdb_members表里插入一個已有的username的記錄就會發(fā)上這個錯誤,或者將一條記錄的username更新 為已有的一個username。

    改變表結構的時候也有可能導致這個錯誤。例如 Discuz!4.0論壇的數(shù)據(jù)庫中cdb_members.username 的索引類型是index這個時候是允許有相同username的記錄存在的,在升級到4.1的時候,因為要將username的索引由原來的index變 為unique。如果這時cdb_members里存在有相同的username的記錄,那么就會引發(fā)這個錯誤。

    導出數(shù)據(jù)據(jù)時有時會因為一些原因(作者目前還不清楚)導致同一條記錄被重復導出,那么這個備份數(shù)據(jù)在導入的時候出現(xiàn)這個錯誤是在所難免的了。

    修改了auto_increment的值,致使“下一個 Autoindex”為一條已經存在的記錄

    解決: 兩種思路,一是破壞掉唯一性的索引。二是把重復的數(shù)據(jù)記錄干掉,只保留一條。很顯然第一種思路是不可取的。那么按照二的思路我們得出以下幾種解決方法,對應上面的i ii iii (略)

    按照錯誤提示里的信息到數(shù)據(jù)庫中將重復的記錄刪除,僅保留一條即可。之后繼續(xù)執(zhí)行升級操作。

    這種情況發(fā)生的概率很小,可以用文本編輯器打開備份文檔,查找重復的信息。將其多余的拿掉,僅保留一條即可。

    查詢出表中auto_increment最大的一條記錄,設置auto_incerment比其大一即可。

    PS:repaire table “表名“,可以暫時解決問題。

    11、 Duplicate key name ‘xxx’

    翻譯:索引名重復

    分析:要創(chuàng)建的索引已經存在了,就會引發(fā)這個錯誤,這個錯誤多發(fā)生在升級的時候??赡苁且呀浬夁^的,重復升級引起的錯誤。也有可能是之前用戶擅自加的索引,剛好與升級文件中的所以相同了。

    解決: 看看已經存在的索引和要添加的索引是否一樣,一樣的話可以跳過這條sql語句,如果不一樣那么現(xiàn)刪除已存在的所以,之后再執(zhí)行。

    12、 Duplicate column name ‘xxx’

    翻譯:字段名xxx重復

    分析:添加的字段xxx已經存在,多發(fā)生在升級過程中,與問題十二的產生是一樣的。

    解決: 看一下已經存在的字段是否和將要添加的字段屬性完全相同,如果相同則可以跳過不執(zhí)行這句sql,如果不一樣則刪除掉這個字段。之后繼續(xù)執(zhí)行升級程序。

    13、 Table ‘xxx’ already exists

    翻譯:數(shù)據(jù)表xxx已經存在

    分析:xxx表已經存在于庫中,再次試圖創(chuàng)建這個名字的表就會引發(fā)這個錯誤。同樣多發(fā)生在論壇的升級中。類似于問題十二。

    解決: 看看已經存在的表是否和將要創(chuàng)建的表完全一樣,一樣的話可以跳過不執(zhí)行這個sql,否則請將存在的表先刪除,之后繼續(xù)執(zhí)行升級文件。

    14、 Can’t create database ‘xxx’. Database exists

    翻譯:不能創(chuàng)建數(shù)據(jù)庫xxx,數(shù)據(jù)庫已經存在

    分析:一個mysql下面的數(shù)據(jù)庫名稱必須保證唯一性,否則就會有這個錯誤。

    解決:把已經存在的數(shù)據(jù)庫改名或者把將要創(chuàng)建的數(shù)據(jù)庫改名,總之不讓他們的名稱沖突。

    15、 小結(針對問題 11\12\13\14\15)

    此類問題錯誤提示中都暗藏一個關鍵詞duplicate(重復)

    那么對于mysql數(shù)據(jù)庫來說什么東西是不能重復的呢?

    數(shù)據(jù)庫 database

    同一個數(shù)據(jù)庫下數(shù)據(jù)表 table

    同一個數(shù)據(jù)表下字段 column

    同一個數(shù)據(jù)表下索引 key

    同一個數(shù)據(jù)表在索引唯一(UNIQUE PRIMARY)的情況下記錄中的這些字段不可以重復

    16、Unknown system variable ‘NAMES’

    翻譯:未知的系統(tǒng)變量NAMES

    分析:Mysql版本不支持字符集設定,此時強行設定字符集就會出現(xiàn)這個錯誤。

    解決: 將sql語句中的SET NAMES ‘xxx’ 語句去掉

    17、 Lost connection to MySQL server during query

    翻譯:MySQL服務器失去連接在查詢期間

    分析:遠程連接數(shù)據(jù)庫是有時會有這個問題。MySQL服務器在執(zhí)行一條sql語句的時候失去了連接造成的。

    解決: 一般不需要怎么去處理,如果頻繁的出現(xiàn)那么考慮改善硬件環(huán)境。

    18、User ‘red’ has exceeded the ‘max_updates’ resource (current value: 500)

    翻譯:msql用戶red已經超過了’max_updates’(最大更新次數(shù)),’max_questions’(最大查詢次數(shù)),’max_connections’(最大連接數(shù)),當前設定為500

    分析:在mysql數(shù)據(jù)庫的下有一個庫為mysql,它其中有一個表為user這里面的紀錄每一條都對應為一個mysql用戶的授權。其中字段 max_questions max_updates max_connections分別記錄著最大查詢次數(shù) 最大更新數(shù) 最大連接數(shù),當目前的任何一個參數(shù)大于任何一個設定的值就會產生這個錯誤。

    解決: 獨立主機用戶可以直接修改授權表。修改完之后重啟mysql或者跟新授權表,進入mysql提示符下執(zhí)行

    FLUSH PRIVILEGES;

    記得后面要有分號’;’

    虛擬主機的用戶如果總是出現(xiàn)這個問題可找空間商協(xié)商解決。

    19、Too many connections (1040)鏈接過多

    翻譯:達到最大連接數(shù)

    問題分析:

    連接數(shù)超過了mysql設置的值,與max_connections 和wait_timeout 都有關系。wait_timeout的值越大,連接的空閑等待就越長,這樣就會造成當前連接數(shù)越大

    解決方法:

    1.虛擬主機用戶請聯(lián)系空間商優(yōu)化 MySQL 服務器的配置;

    2.獨立主機用戶請聯(lián)系服務器管理員優(yōu)化 MySQL 服務器的配置,可參考:

    修改 MySQL 配置文件 my.ini 或者 my.cnf 中的參數(shù):

    max_connections= 1000

    wait_timeout = 10

    修改后重啟 MySQL ,如果經常性的報此錯誤,請做一下服務器的整體優(yōu)化。

    20、There is no such grant defined for user ‘%s’ on host ‘%s’

    錯誤編號:1141

    問題分析:

    MySQL 當前用戶無權訪問數(shù)據(jù)庫。

    解決方法:

    1、虛擬主機用戶請聯(lián)系空間商,確認給你提供的帳號是否有授權數(shù)據(jù)庫的權限。

    2、獨立主機用戶請聯(lián)系服務器管理員,確認給您提供的數(shù)據(jù)庫帳號是否有管理此數(shù)據(jù)庫的權限。

    21、Error on rename of ‘%s’ to ‘%s’ (errno: %d)

    error.:1025

    問題分析:

    請檢查一下您的程序是否有修改數(shù)據(jù)庫表名的語句。

    解決方法:

    1.請檢查您的程序中哪些地方需要修改數(shù)據(jù)庫表名;

    2.如果您的實際應用確實需要修改到數(shù)據(jù)庫表名的話,請聯(lián)系空間商或者服務器管理員給您開放修改庫名的權限和服務器本身是否正常。

    22、Error reading file ‘%s’ (errno: %d)

    error.:1023

    問題分析:

    數(shù)據(jù)庫文件不能被讀取。

    解決方法:

    1.虛擬主機用戶請聯(lián)系空間商查看數(shù)據(jù)庫是否完好。

    2.獨立主機用戶請聯(lián)系服務器管理員檢查一下 MySQL 本身是否正常, MySQL 是否可以讀取文件,Linux 用戶可以檢查一下 MySQL 的數(shù)據(jù)庫文件的屬主是否正確以及本身的文件是否損壞。

    23、Host ‘*****’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

    error.:1129

    問題分析:

    數(shù)據(jù)庫出現(xiàn)異常,請重啟數(shù)據(jù)庫。

    解決方法:

    1. 由于存在很多連接錯誤,主機’****’被屏蔽,虛擬主機用戶請聯(lián)系空間商處理,獨立主機用戶請聯(lián)系服務器管理員,在 MySQL 的命令控制臺下執(zhí)行’mysqladmin flush-hosts’解除屏蔽即可,或者重啟 MySQL 數(shù)據(jù)庫

    24、dropping database (can’t delete ‘%s’, errno: %d)

    error.:1009

    問題分析:

    不能刪除數(shù)據(jù)庫文件,導致刪除數(shù)據(jù)庫失敗。

    解決方法:

    1.檢查您使用的數(shù)據(jù)庫管理帳號是否有權限刪除數(shù)據(jù)。

    2.檢查數(shù)據(jù)庫是否存在。

    25、Got error 28 from table handler

    error.:1030

    問題分析:

    數(shù)據(jù)庫所在磁盤空間已滿。

    解決方法:

    1.虛擬主機用戶請聯(lián)系空間商增加 MySQL 所在的磁盤空間或者清理一些無用文件;

    2.獨立主機用戶請聯(lián)系服務器管理員增加 MySQL 所在的磁盤空間或者清理一些無用文件

    26、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

    問題分析:

    數(shù)據(jù)庫服務器問題,數(shù)據(jù)庫操作無法創(chuàng)建新線程。一般是兩個原因:

    1.服務器系統(tǒng)內存溢出。

    2.環(huán)境軟件損壞或系統(tǒng)損壞。

    解決方法:

    1.虛擬主機用戶請聯(lián)系下空間商數(shù)據(jù)庫服務器的內存和系統(tǒng)是否正常。

    2.獨立主機用戶請聯(lián)系服務器管理員檢查服務器的內存和系統(tǒng)是否正常,如果服務器內存緊張,請檢查一下哪些進程消耗了服務器的內存,同時考慮是否增加服務器的內存來提高整個的負載能力。

    27、Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client

    error.:1251

    問題分析:

    如果你升級 MySQL 到 4.1 以上版本后遇到以上問題,請先確定你的 MySQL Client 是 4.1 或者更高版本( Windows 下有問題你就直接跳到下面看解決方法了,因為 MySQL 在 Windows 是 client 和 server 一起裝上了的)。

    解決方法:

    1. Windows 平臺

    主要是改變連接 MySQL 的帳戶的加密方式,MySQL 4.1/5.0 是通過 PASSWORD 這種方式加密的??梢酝ㄟ^以下兩種方法得到解決:

    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 平臺

    Linux 平臺下首先確定是否安裝過 MySQL 的客戶端,這個用 rpm 安裝很簡單,Linux 代碼為:

    rpm -ivh MySQL-client-4.1.15-0.i386.rpm

    然后在編譯 php 的時候要加上:

    –with-mysql=/your/path/to/mysql

    一般情況下都可以解決。如果還出現(xiàn)這種錯誤,可以按照下面的方法來做:

    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';

    28、Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

    error.:2002

    問題分析:

    出現(xiàn)這個錯誤一般情況下是因為下面兩個原因:

    1.MySQL 服務器沒有開啟。

    2.MySQL 服務器開啟了,但不能找到 socket 文件。

    解決方法:

    1.虛擬主機用戶,請聯(lián)系空間商確認數(shù)據(jù)庫是否正常啟動。

    2.獨立主機用戶,請檢查一下 MySQL 服務是否已經開啟,沒有開啟,請啟動 MySQL 服務;如果已經開啟,并且是 Linux 系統(tǒng),請檢查一下 MySQL 的 socket 的路徑,然后打開 config.inc.php 找到

    $dbhost = ‘localhost'; 在 hostname 后面加冒號‘:’和 MySQL 的 socket 的路徑。

    比如 MySQL 服務器為 localhost

    MySQL 的 socket 的路徑為 /tmp/mysql.sock

    那么就改成如下:

    $dbhost = ‘localhost:/temp/mysql.sock';

    29、Can’t connect to MySQL server on ‘localhost’

    error.:2003

    問題分析:

    MySQL 服務沒有啟動,一般是在異常的情況下 MySQL 無法啟動導致的,比如無可用的磁盤空間,my.ini 里 MySQL 的 basedir 路徑設置錯誤等。

    解決方法:

    1.檢查磁盤空間是否還有剩余可用空間,盡量保持有足夠的磁盤空間可用。

    2.檢查 my.ini 里的 basedir 等參數(shù)設置是否正確,然后重新啟動下 MySQL 服務。

    30、Lost connection to MySQL server during query

    error.:2013

    問題分析:

    數(shù)據(jù)庫查詢過程中丟失了與 MySQL 服務器的連接。

    解決方法:

    1.請確認您的程序中是否有效率很低的程序,比如某些插件,可以卸載掉插件,檢查一下服務器是否正常;

    2.服務器本身資源緊張,虛擬主機用戶請聯(lián)系空間商確認,獨立主機用戶請聯(lián)系服務器管理員,檢查一下服務器是否正常。

    31、Got a packet bigger than \’max_allowed_packet\’ bytes

    錯誤編號:1153

    問題分析:調整了 Mantis 的上傳附件的大小卻沒有調整 MySQL 的配置文件。

    解決辦法:

    1、獨立主機用戶請按照以下方法調整:

    查找 MySQL 的配置文件(my.cnf 或者 my.ini)

    在 [mysqld] 部分添加一句(如果存在,調整其值就可以):

    max_allowed_packet=10M

    重啟 MySQL 服務就可以了。這里設置的是 10MB。

    2、虛擬主機用戶請聯(lián)系空間商調整此參數(shù)。
    虛擬主機

    河南億恩科技股份有限公司(mszdt.com)始創(chuàng)于2000年,專注服務器托管租用,是國家工信部認定的綜合電信服務運營商。億恩為近五十萬的用戶提供服務器托管、服務器租用、機柜租用、云服務器、網站建設、網站托管等網絡基礎服務,另有網總管、名片俠網絡推廣服務,使得客戶不斷的獲得更大的收益。
    服務器/云主機 24小時售后服務電話:0371-60135900
    虛擬主機/智能建站 24小時售后服務電話:0371-55621053
    網絡版權侵權舉報電話:0371-60135995
    服務熱線:0371-60135900

    3
    1
    分享到:責任編輯:小柳

    相關推介

    共有:0條評論網友評論:

    驗證碼 看不清換一張 換一張

    親,還沒評論呢!速度搶沙發(fā)吧!