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

【MySQL】常見錯誤與常用命令的集錦

編輯:MySQL綜合教程

【MySQL】常見錯誤與常用命令的集錦


【背景介紹】 在使用SQL Server數據庫期間,想必大家一定都有過解決各種問題的經歷了,很多時候,都會在大家的博客中看到問題與解決方案。現在開發使用的是MySQL數據庫,現在來看,發現自己在MySQL中的經歷越來越多。前兩天,自己電腦的MySQL數據庫出問題了,折騰了我好幾個小時~~
這篇博客就將把之前遇到的和這次遇到的錯誤記錄下來,以後也可以更好更快的找到解決辦法吧。
【常見錯誤】 (1) windows mysql提示:1045 access denied for user'root'@'localhost' using password yes
參考鏈接:http://blog.csdn.net/so1127/article/details/6619844 因為在解決這個問題的時候,需要用到my.ini文件,安裝完後並沒有這個文件,從網上查的是可以自己創建,於是我就自己創建了一個這樣的文件。內容如下:
    # For advice on how to change settings please see
    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
    # *** default location during install, and will be replaced if you
    # *** upgrade to a newer version of MySQL.

[mysqld]

    # Remove leading # and set to the amount of RAM for the most important data
    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
    # innodb_buffer_pool_size = 128M

    # Remove leading # to turn on a very important data integrity option: logging
    # changes to the binary log between backups.
    # log_bin

    # These are commonly set, remove the # and set as required.
 basedir = E:\MySQL\mysql-5.6.24-winx64
 datadir = E:\MySQL\mysql-5.6.24-winx64\data
    # port = 8099
    # server_id = sa

    # Remove leading # to set options mainly useful for reporting servers.
    # The server defaults are faster for transactions and fast SELECTs.
    # Adjust sizes as needed, experiment to find the optimal values.
    # join_buffer_size = 128M
    # sort_buffer_size = 2M
    # read_rnd_buffer_size = 2M 

    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
    skip-grant-tables
    default-character-set=utf8
這個問題就解決了,在加上這個文件後,我嘗試建立新用戶,又出現了一個新的問題。
(2) ERROR 1364(HY000):Field 'ssl_cipher' doesn't have a default value
參考博客:http://xiejianglei163.blog.163.com/blog/static/12472762014424048216/
我照著博客的內容將my.ini文件中的一句話改了:
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改為 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 此後,我也成功創建了用戶。
這兩個問題解決了,我在學習網上商城的時候也就一切順利。
但前兩天,重啟電腦後,數據庫又出現了下面的一系列問題了。
(3) 啟動MySQL服務,出現錯誤1067:
    	
\ 參考鏈接:http://jingyan.baidu.com/article/d5c4b52bee6e69da560dc5ec.html 出現這個問題,我采取的辦法是方法二,將my.ini文件刪除,這樣MySQL服務就可以正常啟動了。
但將my.ini文件刪除後,一直出現1045的錯誤,就這樣,兩個問題好像死循環了,一直都解決不了。無奈之下,卸載了mysql,重新安裝了一次。 在這裡卸載/安裝的過程就不說了,下面繼續看幾個遇到的MySQL的錯誤: (4) 2003-Can't connect to MySQL server on 'localhost'(10061)
出現這個錯誤的原因,是MySQL服務沒有啟動,可輸入service.msc窗口命令,進入到服務管理,將MySQL服務啟動就行。或者使用mysql命令啟動也可以。
(5) Host "localhost" is not allowed to connect to mysql server 這是在本地都不能登錄到MySQL數據庫。 參考鏈接:http://www.cnblogs.com/ycsfwhh/archive/2011/02/18/1957980.html 首先,停止mysql服務:sc stop mysql
	
\ 然後,mysqld --skip-grant-tables
另開一個終端,繼續,mysqlcheck --check-upgrade --all-databases --auto-repair
再輸入mysql,終於提示連接成功了。
	
\ 本地可以連接成功了,下面別人在遠程自己的數據庫時,可能又會遇到1045的錯誤。
(6) Access denied for user 'root'@'localhost' (using password:YES)
解決方法: 方案一:改表 use [databasename]; select user,host,password from user; update user set host = '%' where user='root'; 方案二:授權
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES;(任何主機都可以連接到mysql服務器) (7) 中文亂碼問題
在做ITOO項目的時候,從代碼中直接插入記錄到數據庫中,中文便是亂碼了。第一版思修考試的時候,時間緊張,沒有完全解決這個問題,部分可以導入中文,部分又導入的是亂碼。在接下來的這一版開發中,終於找到了問題的根源。 亂碼緣由:
不同的編碼格式會導致同一字符,在不同字符集下的編碼會不同。同樣同一編碼在不同的字符集中代碼的字符也不相同。當你的MySQL返回的字符串的編碼格式(字符集)與你的客戶工具程序(mysql, php, query browser, ...)當前使用的字符集不同時,就會造成亂碼。
亂碼後需要檢查的信息: 1. 數據庫表中字段的字符集設置 。 show create table TableName 或 show full columns from tableName 2. 當前聯接系統參數 show variables like 'char%' 提示: 中文,應確保表中該字段的字符集為中文兼容,具體包含以下四種:
big5 | Big5 Traditional Chinese
gb2312 | GB2312 Simplified Chinese
gbk | GBK Simplified Chinese
utf8 | UTF-8 Unicode
亂碼原因
	
\ 上圖是我在檢查上面兩條信息的結果,很明顯,所連接的數據庫設置的字符集為latin1,所以,導入數據的時候就變成亂碼了。
解決方案:
用Navicat軟件打開對應的數據庫,將其數據庫屬性的字符集設置為utf8.
	
\ 【錯誤總結】
很多情況下,都遇到1045的錯誤,在查資料的過程中,發現普遍的原因有以下兩點:
1.可能是mysql用戶表中存在不完整的記錄; 2.可能是沒有給mysql用戶表中的用戶授予權限。

因為mysql數據庫不像sql server數據庫那樣,可以在可視化的界面進行操作,在mysql中,各種操作都是需要通過各種命令去完成的,下面,就總結一些常用的命令,以便提高後期的工作效率。 服務啟動與停止
net stop mysql
net start mysql 登錄mysql
mysql -r root -p 回車 輸入密碼
顯示數據庫列表
show databases;
選擇數據庫和顯示數據表
use mysql;
show tables; 建庫、刪庫
create database dbName;
drop database dbName;
備份
mysqldump -u [數據庫用戶名] -p [要備份的數據庫名稱]>[備份文件的保存路徑] 例子:mysqldump -u root -p test>E:\tt.sql 還原
mysql -u root -p<[備份文件的保存路徑]
【學習心得】
1.數據庫的備份很重要。因為不知道什麼時候,什麼原因,自己的數據庫就不能用了,等到發生了,後悔也來不及了。 2.沒有什麼解決不了的問題,最壞的辦法也就是重頭再來。遇到問題了,第一次感覺還好,但遇到了一些沒在自己意料之中的問題,遇到了以前的解決方案不再適用這一次的問題,心情就有些不一樣了。最後,我還是自己把數據庫給弄好了,事實證明,不要放棄,最壞的辦法也就是重頭再來。
3.學習是一個漫長的、不斷補充、不斷積累的過程。實際上,解決中文亂碼的問題是後來補充的,因為一直都在使用mysql,一直處在不斷學習地過程中,後面的學習或者偶爾的遇見,才使得自己把之前的問題解決了,所以,學習前後是一個互為補充的階段。

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