首先,字符集的问题:


mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     | 
| character_set_connection | latin1                     | 
| character_set_database   | latin1                     | 
| character_set_filesystem | binary                     | 
| character_set_results    | latin1                     | 
| character_set_server     | latin1                     | 
| character_set_system     | utf8                       | 
| character_sets_dir       | /usr/share/mysql/charsets/ | 
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql>

mysql的字符集分为几类
A.客户端字符集:通过系统变量”character_set_client“表示,通知server端,客户端提交的sql语句编码格式
B.连接字符集:通过系统变量”character_set_connectiont“表示,server端翻译sql语句时,使用的编码格式
C.结果集字符集:通过系统变量”character_set_results“表示,server端返回结果集之前把结果集转换成的编码格式
D.存储字符集:通过系统变量”character_set_results“和“character_set_server”表示,是数据在存储引擎里编码格式

为了不出现乱码,我们需要统一修改这些参数,比如我要把数据库的默认字符集改为utf8,如下所示

在[client]下添加如下参数
default-character-set=utf8

在[mysqld]下添加如下参数
default-character-set=utf8

然后重启mysql服务,再查看字符集(要重新登录客户端)

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| 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/ | 
+--------------------------+----------------------------+
8 rows in set (0.01 sec)


这条水平线 上面 的内容是指导我如何修改phpnow中mysql的编码格式的,事实证明没有什么卵用,能改掉其中character_set_server和character_set_database两项。

在mysql里运行set names ''
虽然机子是utf8,但是mysql必须是GBK

这个只是个命令,我用了,但是没有卵用。

MySQL数据库为GBK编号,.net程序使用默认编码(UTF-8),向mysql中插入数据容易产生乱码。解决办法是在连接字符串加入Charset=gbk:

MySqlConnection myConnection = new MySqlConnection("Database=test2;Data Source=localhost;User Id=root;Password=ikmbikmb;Charset=gbk");

这个最起码的还靠点儿谱。

最后记下解决方案,首先,改掉vs中数据库连接字符串的编码格式。

<add key="local" value="Server=localhost;Database=football;Uid=root;Pwd=root;Charset=gb2312;" />

然后,用navicat修改数据库的字符集格式。

再然后,修改数据库表的字符集格式。

这里要注意,数据库连接属性里的不要改。

至此,编码格式的问题算是解决了,可是我发现传过来的字符串不全,比如说四个字的值只传过来前两个字,后来发现是.net中MySqlParameter参数设置的问题。

于是,我增加了一个方法:

public void AddParameter(string key, object value, object dbtype, int size)
{
if (prms == null)
{
prms = new List<MySqlParameter>();
}
MySqlParameter mp = new MySqlParameter(key, value);
mp.MySqlDbType = (MySqlDbType)dbtype;
mp.Size = size;
prms.Add(mp);
}

使用的时候要注意,如果不设置的话,MySqlDbType默认是BLOB

vDBManager.AddParameter("@" + key, jd_home[key], MySqlDbType.VarChar, );

字符型的最好是这样传入,这样传入就没有问题了,当然经过测试,数字型的这样传入也没有问题。所以,可以将这个类型设为默认值,有特殊的再特殊处理。

关于今天mysql数据库的一系列问题的更多相关文章

  1. 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库

    昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...

  2. 【Data Cluster】真机环境下MySQL数据库集群搭建

    真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔 ...

  3. 优化MySQL数据库性能的八大方法

    本文探讨了提高MySQL 数据库性能的思路,并从8个方面给出了具体的解决方法. 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就 ...

  4. MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述

    MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...

  5. Mysql数据库的通用安装方法

    安装方式简介 Mysql数据库也时不时的用过一段时间,具体使用的功能都比较浅显,没有具体深入学习.最近一段在公司部署iNeedle系统时经常避免不了要安装apache和Mysql数据库.一般Mysql ...

  6. Mysql 数据库单机多实例部署手记

        最近的研发机器需要部署多个环境,包括数据库.为了管理方便考虑将mysql数据库进行隔离,即采用单机多实例部署的方式.找了会资料发现用的人也不是太多,一般的生产环境为了充分发挥机器性能都是单机单 ...

  7. 在Jena框架下基于MySQL数据库实现本体的存取操作

    在Jena框架下基于MySQL数据库实现本体的存取操作 转自:http://blog.csdn.net/jtz_mpp/article/details/6224311 最近在做一个基于本体的管理系统. ...

  8. python中的MySQL数据库操作 连接 插入 查询 更新 操作

    MySQL数据库 就数据库而言,连接之后就要对其操作.但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必须在里面建立“表”,什么是数据库的表呢?下面摘抄自维 ...

  9. 你真的了解 MySQL 数据库的运行状况吗?

    2015年第三方市场调查机构 Evans 数据公司最近公布的一系列客户调查数据显示,在过去两年里,MySQL 在所有开发者使用的数据库中获得了25%的市场份额,Evans 公司的本次调查显示,数据库的 ...

随机推荐

  1. shell命令:给当前目录里一个文件压缩一份不包含.svn文件的zip包

    filepath=$(cd ")"; pwd) packagePath="$filepath"/package zipPath="$filepath& ...

  2. linux/lib/string.c

    /** * strlen - Find the length of a string * @s: The string to be sized */ size_t strlen(const char ...

  3. iOS学习笔记---oc语言第九天

    初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...

  4. mysql最大连接数

    通常,mysql的最大连接数默认是100, 最大可以达到16384.1.查看最大连接数:show variables like '%max_connections%';2.修改最大连接数方法一:修改配 ...

  5. uestc1888 Birthday Party    组合数学,乘法原理

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=25539#problem/G 题目意思: 有n个人,每个人有一个礼物,每个人能拿 ...

  6. Apache运行模式

    Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM: Multi-Processing Modules).在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个 ...

  7. Ci分开配置网站前台后台的方法

    CodeIgniter 是一个简单快速的PHP MVC框架.EllisLab 的工作人员发布了 CodeIgniter.许多企业尝试体验过所有 PHP MVC 框架之后,CodeIgniter 都成为 ...

  8. timus 1109 Conference(二分图匹配)

    Conference Time limit: 0.5 secondMemory limit: 64 MB On the upcoming conference were sent M represen ...

  9. 用Socket做一个局域网聊天工具(转)

    原文:http://www.cnblogs.com/technology/archive/2010/08/15/1799858.html 程序设计成为简单的服务端和客户端之间的通信, 但通过一些方法可 ...

  10. MySQL删除重复记录只保留一条

    删除表中重复记录,只保留一条: delete from 表名 where 字段ID in (select * from (select max(字段ID) from 表名 group by 重复的字段 ...