亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網(wǎng)絡(luò),我們將竭誠為您提供優(yōu)質(zhì)的服務(wù)! 誠征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯(lián)系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁 >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

MySQL常見問題解答及技巧

添加時間:2013-6-24 16:23:31  添加: 思海網(wǎng)絡(luò) 
 常見問題集錦

 MySQL總是崩潰

 首先你應(yīng)該試著找出問題mysqld守護(hù)進(jìn)程是否死掉或你的問題是否與你的客戶有關(guān)。你可以用mysqladmin version檢查你的mysqld服務(wù)器正常執(zhí)行了多長時間,如果mysqld死了,你可以在文件“mysql-data-directory/'hostname'.err”中找到其原因。


 使用MySQL時的一些常見錯誤

  MySQL server has gone away

 常見的原因是服務(wù)器超時了并且關(guān)閉了連接。缺省地,如果沒有事情發(fā)生,服務(wù)器在 8個小時后關(guān)閉連接。你可在啟動mysqld時通過設(shè)置wait_timeout變量改變時間限制。

 如果mysqld得到一個太大或不正常的包,它認(rèn)為客戶出錯了并關(guān)閉連接。


  Can't connect to [local] MySQL server

 通常意味著沒有一個MySQL服務(wù)器運(yùn)行在系統(tǒng)上或當(dāng)試圖連接mysqld服務(wù)器時,你正在使用一個錯誤的套接字文件或TCP/IP端口。

 檢查(使用ps)服務(wù)器上是否有一個名為mysqld的進(jìn)程啟動

 如果一個mysqld進(jìn)程正在運(yùn)行,可以通過嘗試這些不同的連接來檢查服務(wù)器

shell> mysqladmin version

shell> mysqladmin variables

shell> mysqladmin -h `hostname` version variables

shell> mysqladmin -h `hostname` --port=3306 version

shell> mysqladmin -h 'ip for your host' version

shell> mysqladmin --socket=/tmp/mysql.sock version

 注意hostname命令使用反引號“`”而非正引號“'”;這些導(dǎo)致hostname輸出(即,當(dāng)前主機(jī)名)被代替進(jìn)mysqladmin命令中。

  Host '...' is blocked錯誤

Host 'hostname' is blocked because of many connection errors.

Unblock with 'mysqladmin flush-hosts'

 這意味著,mysqld已經(jīng)得到了大量(max_connect_errors)的主機(jī)'hostname'的在中途被中斷了的連接請求。在max_connect_errors次失敗請求后,mysqld認(rèn)定出錯了(象來字一個黑客的攻擊),并且阻止該站點(diǎn)進(jìn)一步的連接,直到某人執(zhí)行命令mysqladmin flush-hosts。

缺省地,mysqld在10個連接錯誤后阻塞一臺主機(jī)。你可以通過象這樣啟動服務(wù)器很容易地調(diào)整它:

shell> safe_mysqld -O max_connect_errors=10000 &

  Too many connections錯誤

意味著已經(jīng)有max_connections個客戶連接了mysqld服務(wù)器。

如果你需要比缺省(100)更多的連接,那么你應(yīng)該重啟mysqld,用更大的 max_connections 變量值。

  Out of memory錯誤

mysql: Out of memory at line 42, 'malloc.c'

mysql: needed 8136 byte (8k), memory in use: 12481367 bytes (12189k)

ERROR 2008: MySQL client ran out of memory

  注意,錯誤指向了MySQL客戶mysql。這個錯誤的原因很簡單,客戶沒有足夠的內(nèi)存存儲全部結(jié)果。

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

  Packet too large錯誤

  一個MySQL客戶或mysqld服務(wù)器得到一個比max_allowed_packet個字節(jié)長的包

  可以通過用mysql --set-variable=max_allowed_packet=8M指定一個更大的緩沖區(qū)來啟動客戶程序。


  The table is full錯誤

  這個錯誤發(fā)生在內(nèi)存臨時表變得比tmp_table_size字節(jié)大時。


  Commands out of sync in client錯誤

  正在以錯誤的次序調(diào)用客戶函數(shù)!


  Ignoring user錯誤

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

  這意味著在mysqld啟動時或在它再次裝載權(quán)限表時,它在user表中找到了一個有一個無效口令的條目。結(jié)果,條目簡單地被權(quán)限系統(tǒng)忽略。

  Table 'xxx' doesn't exist錯誤

  數(shù)據(jù)庫和表名件是區(qū)分大小寫的!可以用SHOW TABLES檢查你在當(dāng)前數(shù)據(jù)庫中有哪個表。

  從一個文本文件運(yùn)行SQL命令

  可以把SQL命令放在一個文件中并且告訴mysql從該文件讀取其輸入:創(chuàng)造一個文本文件“text_file”,它包含要執(zhí)行的命令。然后如下調(diào)用mysql:

shell> mysql database < text_file

  或

shell> mysql < text_file

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

  怎樣重新設(shè)置一個忘記的口令

  如果忘記了MySQL的root用戶的口令,可以使用如下方法恢復(fù):

  通過發(fā)送一個kill(不是kill -9)到mysqld服務(wù)器來關(guān)閉mysqld服務(wù)器。pid 被保存在一個.pid文件中,通常在MySQL數(shù)據(jù)庫目錄中:

  kill `cat /mysql-data-directory/hostname.pid`

  你必須是一個UNIX root用戶或運(yùn)行服務(wù)器的相同用戶做這個。

  使用--skip-grant-tables選項(xiàng)重啟mysqld。

  用mysql -h hostname mysql連接mysqld服務(wù)器并且用一條GRANT命令改變口令。見7.26 GRANT和REVOKE句法。也可以用mysqladmin -h hostname -u user password 'new password' 進(jìn)行。

  用mysqladmin -h hostname flush-privileges或用SQL命令FLUSH PRIVILEGES來裝載權(quán)限表。

  使用DATE列的問題

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

  改變一張表中列的順序

  在一個應(yīng)用程序中,應(yīng)該決不基于他們的位置使用SELECT * 檢索列,因?yàn)楸环祷氐牧械捻樞蛴肋h(yuǎn)不能保證;對數(shù)據(jù)庫的一個簡單改變可能導(dǎo)致應(yīng)用程序相當(dāng)有戲劇性地失敗。

  可以使用如下方法改變:

  以正確的列順序創(chuàng)建一張新表。

  執(zhí)行INSERT INTO new_table SELECT fields-in-new_table-order FROM old_table.

  刪除或改名old_table。

  ALTER TABLE new_table RENAME old_table。

  數(shù)據(jù)庫復(fù)制

  MySQL(至今)沒有數(shù)據(jù)庫復(fù)制,但是有一些如何實(shí)現(xiàn)的信息。

  復(fù)制一個數(shù)據(jù)庫最一般的方法是使用更新日志。

  數(shù)據(jù)庫備份

  為了得到一個一致的備份,在相關(guān)的表上做一個LOCK TABLES。你只需一個讀鎖定;當(dāng)你在數(shù)據(jù)庫目錄中做文件的一個拷貝時,這允許其他線程繼續(xù)查詢該表。如果你想要做一個SQL級的備份,你可以SELECT INTO OUTFILE。

  備份一個數(shù)據(jù)庫的另一個方法是使用mysqldump程序:

  為你的數(shù)據(jù)庫做一個完整的備份:

shell> mysqldump --tab=/path/to/some/dir --opt --full

 
  你也可以簡單地拷貝所有的表文件(“*.frm”、“*.MYD”和“*.MYI”文件),只要服務(wù)器不在更新任何東西。


  停止mysqld如果它正在運(yùn)行,然后以--log-update選項(xiàng)啟動它。你將得到一個名為“hostname.n”形式的日志文件, 這里n是隨著你每次執(zhí)行mysqladmin refresh或mysqladmin flush-logs、FLUSH LOGS語句、或重啟服務(wù)器而遞增的一個數(shù)字。這些日志文件向你提供了在你執(zhí)行mysqldump處后面進(jìn)行的復(fù)制數(shù)據(jù)庫改變的所需信息。

  如果你必須恢復(fù)一些東西,嘗試首先用myisamchk -r恢復(fù)你的表。這應(yīng)該處理所有情況的99.9%。如果myisamchk失敗,嘗試下列過程:

  恢復(fù)原來的mysqldump備份

  執(zhí)行下列命令以再次運(yùn)行更新日志中的更改:

shell> ls -1 -t -r hostname.[0-9]* | xargs cat | mysql


  ls被用來以正確的順序得到所有的日志文件。


  你也可以與SELECT * INTO OUTFILE 'file_name' FROM tbl_name做有選擇的備份并且用LOAD DATA INFILE 'file_name' REPLACE ...恢復(fù)。為了避免重復(fù)記錄,在表中你需要一個PRIMARY KEY或UNIQUE鍵。當(dāng)在唯一鍵值上一個新記錄與一個老記錄重復(fù)時,REPLACE關(guān)鍵詞使得老記錄用一個新記錄替代。

關(guān)鍵字:MySQL、mysqldump、服務(wù)器

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國增值電信業(yè)務(wù)經(jīng)營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網(wǎng)站公安備案編號:44060602000007 交互式欄目專項(xiàng)備案編號:200303DD003  
察察 工商 網(wǎng)安 舉報有獎  警警  手機(jī)打開網(wǎng)站