如果你有足够的权限,你可以设置全局变量,执行: set GLOBAL character_set_client=gbk如果只是执行set character_set_client=gbk,只能改变当前会话的客户端字符集!系统变量可分为两种类型:线程特定(Thread-specific)或称为连接特定(connection-specific)变量,它们是当前连接唯一的;全局变量,它们用于设置全局事件。全局变量也同样被用于设置一个新连接的相应线程特定变量的初始值。 当 mysqld 启动时,所有的全局变量以命令行参数和选项文件内容初始化。可以通过 SET GLOBAL 命令更改这些值。当一个新的连接线程被建立时,将以全局变量值初始化线程特定变量,直到你执行一个新的 SET GLOBAL 命令时,线程特定变量才会改变。 为了设置一个 全局(GLOBAL) 变量值,可以使用下面的任一句法:(在这里,我们以 sort_buffer_size 变量作为一个示例) SET GLOBAL sort_buffer_size=value; SET @@global.sort_buffer_size=value;
谢谢loveflea(coolwind)回答. 刚才试着设了一下set GLOBAL character_set_client=gbk,发现在winMysqlAdmin中还是没有改变(其实因为现在character_set_client是gbk,我是在把它改成gb2312,控制台改后winMysqlAdmin关服务再开服务,发现character_set_client还是gbk,没变),但我相信正常情况就应该象你说的那样,用set GLOBAL来设. 因为要继续做下去,没有时间一直关注这个问题,就结贴了. 再次谢谢大家.
各位高人能否说说自己的看法.谢谢.
现在主要是我不知道在什么地方能控制character_set_client这些参数,我在MySQL的manual里查到了上边在控制台修改的办法,但竟然没起作用,应该是操作里面有问题吧.
另外如果重装MySQL可以解决问题那也没有问题,但是除了在my.ini中加default-character-set=gbk,其它我还应该做些什么呢?
谢谢.
现在我在控制台输入记录,中文都没存进去,但竟然也不报错(控制台中character_set_client等已经被设成gbk),真是郁闷.
// MySqlCommand myCommand = new MySqlCommand();
// myCommand.Connection = conn;
// myCommand.CommandType = CommandType.Text;
// myCommand.CommandText = "SET character_set_client =gbk";
// conn.Open();
// myCommand.ExecuteNonQuery();
// myCommand.CommandText ="SET character_set_results = gbk";
// myCommand.ExecuteNonQuery();
// myCommand.CommandText ="SET character_set_connection = gbk";
// myCommand.ExecuteNonQuery();另外可以用mysqladmin 的控制台winMysqlAdmin 中修改my.ini配置文件,datadir=C:/mysql/data
下面加入
default-character-set= GBK或者进入系统根目录 直接修改my.ini文件
MySQL是4.1.7,我在my.ini配置文件中加了default-character-set=gbk
后来我重装了MySQL的5.0alpha版(开发的时候用的是该版本,部署时服务器上装的是4.1.7,本来想不改了),然后发现character_set_client缺省竟然就是gbk了(my.ini配置文件没改,应该是default-character-set=gbk起作用了),然后读写数据库也就没有问题了.
但是我还是不知道为什么在4.1.7版下回出这个问题,下次碰到这个问题我想我还是不能马上解决,这点不太舒服.
准备明天结帖.
我设置了,很顺利地完成了,但是在WinMySQLadmin的variable中再看character_set_client还是latin1,重起MySQL后还是一样.
未设之前我在控制台添加新记录,如果有中文会报错,gbk和latin1有Illegal mix of collations error;设好后这个错不报了,但所有中文都没有被添加到数据库中,有的字段还是不允许null的!
后来改装MySql 5.0.0 alpha版后一切正常了.
但是看了raike(云中帆)的回复我觉得这个应该和版本没有关系,应该还是我在设置MySQL的时候什么地方没设置好,只是不知道是什么地方.
SET @@global.sort_buffer_size=value;
刚才试着设了一下set GLOBAL character_set_client=gbk,发现在winMysqlAdmin中还是没有改变(其实因为现在character_set_client是gbk,我是在把它改成gb2312,控制台改后winMysqlAdmin关服务再开服务,发现character_set_client还是gbk,没变),但我相信正常情况就应该象你说的那样,用set GLOBAL来设.
因为要继续做下去,没有时间一直关注这个问题,就结贴了.
再次谢谢大家.