**********************************************************************
1、Starting MySQL...The server quit without updating PID file
修改了/etc/my.cnf後,啟動mysql出現
# /etc/init.d/mysql start
Starting MySQL...The server quit without updating PID file [FAILED]b/mysql/localhost.localdomain.pid).
[mysqld]
character_set_server = utf8
查看mysql的錯誤日記
[root@localhost test1]# vi /var/lib/mysql/localhost.localdomain.err
可以看到
120516 16:26:11 [ERROR] /usr/sbin/mysqld: unknown variable 'default_set_server=utf8'
網上查了下,網友說MySQL5把字元變數改成了character_set_server。
應該用character_set_server=utf8 取代default-character-set=utf8
重新啟動mysql
# /etc/init.d/mysql start
Starting MySQL [ OK ]
**********************************************************************
2、MySQL中文亂碼的問題。
>show variable like 'character%'; #執行編碼顯示
+-------------------------+----------------------------+
| Variable_nam | Value |
+-------------------------+----------------------------+
| character_se_client | latin1 |
| character_se_connection | latin1 |
| character_se_database | latin1 |
| character_se_filesystem | binary |
| character_se_results | latin1 |
| character_se_server | latin1 |
| character_se_system | utf8 |
| character_ses_dir | /usr/share/mysql/charsets/ |
+-------------------------+----------------------------+
--------------
# vi /etc/my.cnf
找到用戶端配置[client] 在下面添加
### 預設字元集為utf8
default-character-set=utf8
在找到[mysqld] 添加
### 預設字元集為utf8
default-character-set=utf8
### (設定串連mysql資料庫時使用utf8編碼,以讓mysql資料庫為utf8運行)
init_connect='SET NAMES utf8'
修改好後,重新啟動mysql 即可,查詢一下show variables like 'character%';
##重新啟動mysql
/etc/init.d/mysql restart
再次查看編碼
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
這時直接在mysql資料庫的控制台下插入和查詢資料是不會出現亂碼了。但C語言寫的程式插入的資料仍為亂碼,在執行插入資料的SQL語句時,在前面加上
MYSQL* pMyData; //msyql 串連控制代碼pMyData = mysql_init(NULL);mysql_query(pMyData, "set character set utf8"); //加上這句
Linux下MySQL設定檔my.ini位置在哪裡?
MySQL設定檔在Windows下叫my.ini,在MySQL的安裝根目錄下;在Linux下叫my.cnf,該檔案位於/etc/my.cnf。
如果找不到/etc/my.cnf可以複製一份
# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************
**********************************************************************