linux mysql my.cnf报错
120326 18:02:05 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
120326 18:02:05 [Note] Plugin 'FEDERATED' is disabled.
120326 18:02:05 InnoDB: The InnoDB memory heap is disabled
120326 18:02:05 InnoDB: Mutexes and rw_locks use InnoDB's own implementation
120326 18:02:05 InnoDB: Compressed tables use zlib 1.2.3
120326 18:02:05 InnoDB: Using Linux native AIO
120326 18:02:05 InnoDB: Initializing buffer pool, size = 128.0M
120326 18:02:05 InnoDB: Completed initialization of buffer pool
120326 18:02:05 InnoDB: highest supported file format is Barracuda.
120326 18:02:05 InnoDB: Waiting for the background threads to start
120326 18:02:06 InnoDB: 1.1.8 started; log sequence number 3671689
120326 18:02:06 [ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=gb2312'
120326 18:02:06 [ERROR] Aborting
120326 18:02:06 InnoDB: Starting shutdown...
120326 18:02:07 InnoDB: Shutdown completed; log sequence number 3671689
120326 18:02:07 [Note] /usr/sbin/mysqld: Shutdown complete
mysql插入中文出现乱码解决方法
2011-10-28 11:09:59| 分类: php+mysql+apache | 标签: |字号大中小 订阅
在使用MySQL时,插入中文字符,经常会出现乱码,中文全被用?代替。出现这种情况的原因,多是字符集不匹配造成的。
在MySQL中,如果使用缺省的字符集,在建库、建表时,默认使用的是latin1字符集,为ISO 8859-1西欧字符集。插入中文字符时,与之不匹配,就会出现乱码。
解决方法如下:
1 . copy 一个文件到 /etc/my.cnf
cp /usr/share/mysql/my-large.cnf /etc/my.cnf
2. 然后修改/etc/my.cnf 文件
在[client ] 下面加入:
default-character-set=utf8
在[ mysqld ] 下面加:
default-character-set=utf8
init_connect='SET NAMES utf8'
在[ mysql ] 下面加入: default-character-set=utf8
然后重启mysql服务器:service mysqld restart //我的成功就是改了这个
可能在重启过程中会出现错误:
Starting MySQL............The server quit without updating PID file (/var/lib/mysql/node1.pid). [失败]
查一下 /var/lib/mysql/node1.error 错误文件会发现
[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'
这是 mysqld 不能识别这种格式的 可以将 [ mysqld ] 下的 default-character-set=utf8' 改成
character_set_server=utf8
然后重启就成功了!
但是,此时在查询表中数据,仍为乱码,重新插入数据和重建表也不行。这是因为我们虽然将MySQL的字符集设置为gb2312或utf8,但已经建立的数据库和表,仍采用的是默认的字符集,也即仍为当初的西欧字符集。所以,重建一个数据库,然后重建表,再插入数据,o(∩∩)o...哈哈,中文字符可以就能正常显示了。