程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL常見問題大匯總

MySQL常見問題大匯總

編輯:MySQL綜合教程

以下的文章主要介紹的是MySQL常見問題集錦,我們一共分成七大塊對其進行說明,我們大家都知道MySQL數據庫在是實際應用中的比例遠少於Oracle,之所是這樣的,肯定有它的不足之處。

MySQL常見問題集錦之一:

MySQL(和PHP搭配之最佳組合)總是崩潰

首先你應該試著找出問題MySQL(和PHP搭配之最佳組合)d守護進程是否死掉或你的問題是否與你的客戶有關。你可以用MySQL(和PHP搭配之最佳組合)admin version檢查你的MySQL(和PHP搭配之最佳組合)d服務器正常執行了多長時間,如果MySQL(和PHP搭配之最佳組合)d死了,你可以在文件“MySQL(和PHP搭配之最佳組合)-data-directory/'hostname'.err”中找到其原因。

使用MySQL(和PHP搭配之最佳組合)時的一些常見錯誤

  1. MySQL(和PHP搭配之最佳組合) server has gone away 

常見的原因是服務器超時了並且關閉了連接。缺省地,如果沒有事情發生,服務器在 8個小時後關閉連接。你可在啟動MySQL(和PHP搭配之最佳組合)d時通過設置wait_timeout變量改變時間限制。

如果MySQL(和PHP搭配之最佳組合)d得到一個太大或不正常的包,它認為客戶出錯了並關閉連接。

  1. Can't connect to [local] MySQL(和PHP搭配之最佳組合) server 

通常意味著沒有一個MySQL(和PHP搭配之最佳組合)服務器運行在系統上或當試圖連接MySQL(和PHP搭配之最佳組合)d服務器時,你正在使用一個錯誤的套接字文件或TCP/IP端口。

檢查(使用ps)服務器上是否有一個名為MySQL(和PHP搭配之最佳組合)d的進程啟動

如果一個MySQL(和PHP搭配之最佳組合)d進程正在運行,可以通過嘗試這些不同的連接來檢查服務器

shell> MySQL(和PHP搭配之最佳組合)admin version

shell> MySQL(和PHP搭配之最佳組合)admin variables

shell> MySQL(和PHP搭配之最佳組合)admin -h `hostname` version variables

shell> MySQL(和PHP搭配之最佳組合)admin -h `hostname` --port=3306 version

shell> MySQL(和PHP搭配之最佳組合)admin -h 'ip for your host' version

shell> MySQL(和PHP搭配之最佳組合)admin --socket=/tmp/MySQL(和PHP搭配之最佳組合).sock version

注意hostname命令使用反引號“`”而非正引號“'”;這些導致hostname輸出即,當前主機名)被代替進MySQL(和PHP搭配之最佳組合)admin命令中。

  1. Host '...' is blocked錯誤  
  2. Host 'hostname' is blocked because of many connection errors.  
  3. Unblock with 'MySQL(和PHP搭配之最佳組合)admin flush-hosts'  

這意味著,MySQL(和PHP搭配之最佳組合)d已經得到了大量(max_connect_errors)的主機'hostname'的在中途被中斷了的連接請求。在max_connect_errors次失敗請求後,MySQL(和PHP搭配之最佳組合)d認定出錯了(象來字一個黑客的攻擊),並且阻止該站點進一步的連接,直到某人執行命令MySQL(和PHP搭配之最佳組合)admin flush-hosts。

缺省地,MySQL(和PHP搭配之最佳組合)d在10個連接錯誤後阻塞一台主機。你可以通過象這樣啟動服務器很容易地調整它:

  1. shell> safe_MySQL(和PHP搭配之最佳組合)d -O max_connect_errors=10000 & 

MySQL常見問題集錦之二:Too many connections錯誤

意味著已經有max_connections個客戶連接了MySQL(和PHP搭配之最佳組合)d服務器。

如果你需要比缺省(100)更多的連接,那麼你應該重啟MySQL(和PHP搭配之最佳組合)d,用更大的 max_connections 變量值。

MySQL常見問題集錦之三:Out of memory錯誤

MySQL(和PHP搭配之最佳組合): Out of memory at line 42, 'malloc.c'

MySQL(和PHP搭配之最佳組合): needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)

ERROR 2008: MySQL(和PHP搭配之最佳組合) client ran out of memory

注意,錯誤指向了MySQL(和PHP搭配之最佳組合)客戶MySQL(和PHP搭配之最佳組合)。這個錯誤的原因很簡單,客戶沒有足夠的內存存儲全部結果。

首先檢查你的查詢是否正確

MySQL常見問題集錦之四:Packet too large錯誤

一個MySQL(和PHP搭配之最佳組合)客戶或MySQL(和PHP搭配之最佳組合)d服務器得到一個比max_allowed_packet個字節長的包

可以通過用MySQL(和PHP搭配之最佳組合) --set-variable=max_allowed_packet=8M指定一個更大的緩沖區來啟動客戶程序。

MySQL常見問題集錦之五:The table is full錯誤

這個錯誤發生在內存臨時表變得比tmp_table_size字節大時。

Commands out of sync in client錯誤

正在以錯誤的次序調用客戶函數!

MySQL常見問題集錦之六:Ignoring user錯誤

  1. Found wrong password for user: 'some_user@some_host'; Ignoring user 

這意味著在MySQL(和PHP搭配之最佳組合)d啟動時或在它再次裝載權限表時,它在user表中找到了一個有一個無效口令的條目。結果,條目簡單地被權限系統忽略。

MySQL常見問題集錦之七:Table 'xxx' doesn't exist錯誤

數據庫和表名件是區分大小寫的!可以用SHOW TABLES檢b查你在當前數據庫中有哪個表。

從一個文本文件運行SQL命令

可以把SQL命令放在一個文件中並且告訴MySQL(和PHP搭配之最佳組合)從該文件讀取其輸入:創造一個文本文件“text_file”,它包含要執行的命令。然後如下調用MySQL(和PHP搭配之最佳組合):

shell> MySQL(和PHP搭配之最佳組合) database < text_file

shell> MySQL(和PHP搭配之最佳組合) < text_file

啟動有USE db_name語句的文本文件。

怎樣重新設置一個忘記的口令

如果忘記了MySQL(和PHP搭配之最佳組合)的root用戶的口令,可以使用如下方法恢復:

通過發送一個kill不是kill -9)到MySQL(和PHP搭配之最佳組合)d服務器來關閉MySQL(和PHP搭配之最佳組合)d服務器。pid 被保存在一個.pid文件中,通常在MySQL(和PHP搭配之最佳組合)數據庫目錄中:

kill `cat /MySQL(和PHP搭配之最佳組合)-data-directory/hostname.pid`

你必須是一個UNIX root用戶或運行服務器的相同用戶做這個。

使用--skip-grant-tables選項重啟MySQL(和PHP搭配之最佳組合)d。

用MySQL(和PHP搭配之最佳組合) -h hostname MySQL(和PHP搭配之最佳組合)連接MySQL(和PHP搭配之最佳組合)d服務器並且用一條GRANT命令改變口令。見7.26 GRANT和REVOKE句法。也可以用MySQL(和PHP搭配之最佳組合)admin -h hostname -u user password 'new password' 進行。

用MySQL(和PHP搭配之最佳組合)admin -h hostname flush-privileges或用SQL命令FLUSH PRIVILEGES來裝載權限表。

使用DATE列的問題

DATE值的格式是'YYYY-MM-DD'。

改變一張表中列的順序

在一個應用程序中,應該決不基於他們的位置使用SELECT * 檢索列,因為被返回的列的順序永遠不能保證;對數據庫的一個簡單改變可能導致應用程序相當有戲劇性地失敗。

可以使用如下方法改變:

以正確的列順序創建一張新表。

  1. 執行INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.  

刪除或改名old_table。

  1. ALTER TABLE new_table RENAME old_table。  

數據庫復制

MySQL(和PHP搭配之最佳組合)(至今)沒有數據庫復制,但是有一些如何實現的信息。

復制一個數據庫最一般的方法是使用更新日志。


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved