mysql存储过程编码问题

时间:2021-08-27 21:22:00
数据库的表不要设置成中文的
字段也不要设置成中文的 
设置成中文的可能出现错误
create table  新闻表 (
newID int ,
title varchar(30),
content varchar(400),
writerdate varchar(40)
);




create table  news (
newID int ,
title varchar(30),
content varchar(400),
writerdate varchar(40)
) engine = innodb;


//没有错误
INSERT into news values(1,'啊啊','a',1);


//没有错误
CREATE PROCEDURE proc_studentCountBySex
(
   in new_id int ,   
   out is_success int
)
begin
   set is_success=(select newID from news where newID=new_id);
end;


drop procedure proc_studentCountBySex;
set @number=0;
call proc_studentCountBySex(1,@number);
select @number;


//创建没有错误
CREATE PROCEDURE proc_add
(
   in new_id int ,   
   in title  varchar(30) CHARACTER set utf8,
   in content  varchar(40) CHARACTER set utf8,
   in writerdate int 
)
begin
    INSERT into news(newID ,title ,content ,writerdate) 
    values(new_id,title,content,writerdate);
end;
drop procedure proc_add;
use king ;
//通过存储过程进行的操作出现编码相关的错误  正常插入没错  mysql中的对象都伴随着编码 ,所以需要修编码
call proc_add(14,'意义','完全',100);
call proc_add(14,'a','a',100);
select * from news;
ALTER TABLE `新闻表` DEFAULT CHARACTER SET='utf8
set names utf8;
show variables like 'char%';

SET character_set_server= utf8;


/**

真心不容易,问题解决了!确实是编码的问题!
使用mysql migration toolkit 把ms sql server导入到mysql中,
在Object Mapping 选项时 
修改migration of type mssql schema 中的 set parameter 选择 Multilanguage
修改migration of type mssql table 中的 set parameter 选择 Data consistency/Multilanguage
还有就是
修改my.ini文件 下的
[mysql]default-character-set=utf8  

[mysqld]character-set-server=utf8
这样就确保了,mysql中的编码类型,
用show variables like 'char%';查看得到如下:
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

/