查看及修改mysql数据库的默认编码2
使用mysql 经常会遇到编码问题,而导致程序出现乱码,mysql 在以下几个地方会涉及到编码格式
数据库编码
服务器编码
连接编码
客户端编码
下面是一个典型的示例, 运行 mysql -u root
查看编码 mysql>status
mysql Ver 14.7 Distrib 4.1.14, for Win32 (ia32)
Connection id: 90
Current database: yitian
Current user: ODBC@localhost
SSL: Not in use
Using delimiter: ;
Server version: 4.1.14
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: gbk
Client characterset: latin1
Conn. characterset: latin1
TCP port: 3306
Uptime: 1 hour 28 min 21 sec
Server characterset: latin1 服务器使用的编码为 latin1
Db characterset: gbk 数据库 yitian的编码为 GBK
Client characterset: latin1 client 端为 latin1
Conn. characterset: latin1 连接的编码为 latin
如果我们要使用支持中文的 gbk 数据库, 就要在创建数据库时,使用下面的语法
GBK 使用
CREATE DATABASE yitian DEFAULT CHARACTER SET gbk
COLLATE gbk_chinese_ci;
utf8 使用
CREATE DATABASE IF NOT EXISTS yitian default charset
utf8 COLLATE utf8_general_ci;
如果要修改已存在的数据库设置使用
alter database testdb character set
utf8
然后在程序中连接时也应该设定相应的字符集 , 使用
SET CHARACTER SET GBK;
这时再查看看下编码
mysql>status
mysql Ver 14.7 Distrib 4.1.14, for Win32 (ia32)
Connection id: 90
Current database: yitian
Current user: ODBC@localhost
SSL: Not in use
Using delimiter: ;
Server version: 4.1.14
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: latin1
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 1 hour 33 min 22 sec
就可以使用程序正确写入和读取数据了
如果要改变数据库的默认编码可以修改 my.ini
设置 my.ini
#default-character-set=GBK
default-character-set = UTF8
相关文档:
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <mysql.h>
#pragma comment(lib,"libmysql")
int _tmain(int argc, _TCHAR* argv[])
{
MYSQL* mysql;
MYSQL_RES* results;
MYSQL_ROW record;
mysql = mysql_init(NULL);
if(! ......
很多朋友都有过这样的经历,将mysql升级到4.1(或以上)版本后,旧的程序从数据库读出来的都变成乱码了.这个问题网上很多这方面的讨论,其实手册上已经有关于这方面的详细说明,
以下内容摘自mysql手册,
产生这个问题的原因是:
MySQL 4.1.x开始支持以下这些事情
· 使 ......
备份MySQL数据库的命令
mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql
备份MySQL数据库为带删除表的格式
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > bac ......
1. 在/etc/my.cnf中加入一下内容
[mysqld_dev]
socket=/tmp/mysql.sock
port=3307
pid-file=/var/run/mysqld/mysqld_dev.pid
datadir=/var/lib/mysql_dev
log=/var/log/mysqld_dev.log
log-error=/var/log/mysqld_dev.err.log
user=mysql
2. 根据以上内容创建目录和文件
mkdir /var/lib/mysqld_dev
chown mys ......
原作:杨涛(上帝他爸)
一直想等到BETA版出来再试验的,可还是经不住诱惑阿,下午终于有时间测试一下了。
(本文参考地址:http://blog.chinaunix.net/u/8111/showart.php?id=451420)
一、必备软件:
1、LUA
可以去LUA的官方下载:www.lua.org
2、MySQL Proxy
这里有好多二进制版本。
& ......