對于資料庫級的字元集,如果沒有辦法重建資料庫,可以在my.cnf檔案中使用character-set-server = utf8(要重新開機資料庫服務),對于之前已經存在資料庫,此參數不産生影響。如果之前的資料庫A是latin1,在A中建立的表預設還是latin1,除非指定DEFAULT CHARSET!然而對于建立的資料庫,則繼承 my.cnf檔案中使用character-set-server = utf8!
[root@rac3 ~]# more /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
old_passwords=1
character-set-server = utf8
關閉資料庫服務,并重新啟動!
[root@rac3 ~]# mysqladmin shutdown
[root@rac3 ~]# mysqld_safe &
[1] 15102
[root@rac3 ~]# Starting mysqld daemon with databases from /var/lib/mysql
[root@rac3 ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45 Source distribution
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show variables like '%server%';
+----------------------+-----------------+
| Variable_name | Value |
| character_set_server | utf8 |
| collation_server | utf8_general_ci |
| server_id | 0 |
3 rows in set (0.00 sec)
--重建立立資料庫,檢視其預設字元集:為utf8
mysql> create database yql;
Query OK, 1 row affected (0.00 sec)
mysql> use yql;
Database changed
建立表的預設字元集和資料庫的預設字元集一緻!
mysql> create table t(id int);
Query OK, 0 rows affected (0.00 sec)
mysql> show create table t;
+-------+-------------------------------------------------------------------------------------+
| Table | Create Table |
| t | CREATE TABLE `t` (
`id` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
1 row in set (0.00 sec)
mysql> show create database yql \G;
*************************** 1. row ***************************
Database: yql
Create Database: CREATE DATABASE `yql` /*!40100 DEFAULT CHARACTER SET utf8 */
ERROR:
No query specified