mysql数据库之编码重新设置

最近在使用使用mysql数据库的存储过程的时候,发现一些问题,数据库编码和表格、字段的编码不一致

导致运行的时候出现问题,错误提示:1267 - Illegal mix of collations

通过网上的一些方法解决了数据库系统本身的编码,还有边个的编码,但还是没有解决问题,

然后建表的语句导出来看看:

CREATE TABLE `dev_info` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`dev_id`  int(10) NOT NULL ,
`dev_sta`  int(5) NOT NULL ,
`sta_name`  varchar(5) CHARACTER SET A COLLATE A_ci NOT NULL ,
`sessionID`  varchar(50) CHARACTER SET A COLLATE A_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=gb2312 COLLATE=gb2312_chinese_ci
AUTO_INCREMENT=13
ROW_FORMAT=COMPACT
;

编码  A A_ci 只是我举个例子的啊,就是和 gb2312 不一样的编码,


发现问题了,虽然数据库和表格的编码都是一样了,但是字段的编码还不一样,所以需要重新建立表格,

建表:

CREATE TABLE `dev_info` (
`id`  int(11) NOT NULL AUTO_INCREMENT ,
`dev_id`  int(10) NOT NULL ,
`dev_sta`  int(5) NOT NULL ,
`sta_name`  varchar(5) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NOT NULL ,
`sessionID`  varchar(50) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=gb2312 COLLATE=gb2312_chinese_ci
AUTO_INCREMENT=13
ROW_FORMAT=COMPACT
;

这样就解决问题了,不需要重装什么数据库,

我发现问题是写的一个存储过程里面出现的,顺便把存储过程放出来,就是实现两个字符串的比较

CREATE DEFINER = `root`@`localhost` PROCEDURE `NewProc`(IN `app_dev_id` int,OUT `app_session_id` varchar(50))
BEGIN
    #Routine body goes here...
DECLARE var INT;
SET var = (SELECT COUNT(*) FROM mysql_proce.dev_info WHERE dev_id=app_dev_id);

IF var=1 THEN
    SELECT sessionID INTO app_session_id FROM mysql_proce.dev_info WHERE dev_id=app_dev_id;
END IF;
END;
时间: 2024-10-26 04:29:31

mysql数据库之编码重新设置的相关文章

mysql的安装、C++访问mysql数据库、编码设置问题

一.mysql的安装,这个相对简单,直接去官网下载mysql安装程序,就可以完成安装过程,网上有很多安装教程,这个没什么注意事项. 二.C++访问mysql,主要是用到mysql定义的头文件,内部定义了各种数据结构和函数,比如MYSQL,MYSQL_RES,MYSQL_ROW,mysql_real_connect等等一系列的结构和函数.这里要注意的就是将头文件及lib文件以及dll文件配置到当前开发环境来进行访问mysql数据库. 以最新的vs2013作为示例说一下配置过程.为了写的清晰点,在网

JDBC 和 Mybatis连接mysql数据库的时候,设置字符集编码

jdbc连接MySQL数据库的时候,设置字符集编码!!! 可以如下配置,mysql可直接在url后面加上字符集设置: String url = "jdbc:mysql://localhost:3306/exceltest1?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"; Mybatis连接mysql数据库的时候,设置字符集编码!!! 可以如下配置,Mybatis的配

Linux下修改MySQL数据库字符编码为UTF-8解决中文乱码

由于MySQL编码原因会导致数据库出现乱码. 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 >mysql -uroot -p #输入密码进入 >status; #查看当前MySQL运行状态,如下图所示: 2.修改mysql配置文件 [[email protected] ~]# vi /etc/my.cnf #在[client]段增加下面代码 default-character-set=utf

mysql数据库字符编码修改

mysql数据库字符编码修改 修改数据库的字符集mysql>use mydb mysql>alter database mydb character set utf8; 创建数据库指定数据库的字符集 mysql>create database mydb character set utf8; 通过MySQL命令行修改: mysql> set character_set_client=utf8;Query OK, 0 rows affected (0.00 sec) mysql>

使用shell脚本调用mysql数据库存储过程,并设置定时任务

本来是要mysql数据库中创建事件任务来,定时执行存储过程,做数据传输的...后来由于种种原因,就使用crontab来定时执行,调用存储过程. 实现这个数据传输分为两步: 第一步:编写shell脚本调用mysql数据库存储过程,如下: #!/bin/bash#0 1 * * * sh /home/drmTrans3/rj_proc.shhost1=127.0.0.1user=systempasswd=linuxport=3306mysql -h${host1} -u${user} -p${pas

如何查看和修改mysql数据库的编码

笔者网站曾经在把数据库从虚拟空间换到独立服务器上,只是上面安装的数据库编码跟我原来的不同,原来是latin1 ,当前的是GBK格式,由于编码的不同,有时候网站会出现乱码,下面简单介绍一下如何查看和修改mysql数据库的编码: 1.查看数据库编码首先查看当前使用的数据库编码,登陆数据库管理,运行语句: mysql> use testsqlDatabase changedmysql> show variables like 'character_set_database';+-----------

mysql的安装、C++訪问mysql数据库、编码设置问题

一.mysql的安装.这个相对简单,直接去官网下载mysql安装程序.就能够完毕安装过程,网上有非常多安装教程,这个没什么注意事项. 二.C++訪问mysql.主要是用到mysql定义的头文件,内部定义了各种数据结构和函数,比方MYSQL,MYSQL_RES,MYSQL_ROW,mysql_real_connect等等一系列的结构和函数.这里要注意的就是将头文件及lib文件以及dll文件配置到当前开发环境来进行訪问mysql数据库. 以最新的vs2013作为演示样例说一下配置过程. 为了写的清晰

有关mysql数据库的编码

今天在通过表单给php提交数据,然后插入到数据库中.网页与php的编码格式均为utf-8,在插入到数据库中时也设置了$this->query("set names utf8;"); 但是还是出现了在mysql中读取数据出现乱码和问号的情况.后来实在是无解,将mysql设置为gbk编码,居然能正确的显示,简直就是颠覆了三观..至今不知道为什么. 但是在这过程中也了解到了一些有关编码的知识: 在mysql中设置mysql的编码通过修改配置文件my.ini,该文件在mysql的安装路径

前端网页、php与mysql数据库字符编码(解决中文等乱码问题)

web开发中经常涉及前端网页——php——mysql之间的数据交互,当数据只有英文时通常不会有什么问题,但一旦涉及中文,三个地方的某一处字符编码不一致(如,网页使用的时gbk而mysql使用utf-8)就有可能导致乱码的出现. (注:关于字符编码请参见百度百科:http://baike.baidu.com/view/1204863.htm?fr=aladdin) 前端网页编码: 通常我们都认为可以通过<head>标签内的<meta>项(如<META http-equiv=&q