您的位置:首页 > 数据库 > MySQL

mysql创建存储过程中的问题

2016-03-17 13:24 731 查看
1.在创建存储过程成功后,使用call存储过程名执行时报错:
Illegalmixofcollations(utf8_unicode_ci,IMPLICIT)and(utf8_general_ci,IMPLICIT)错误。

解决方法:检查存储过程使用到的表格的编码方式,包括字段和表格本身。最后统一编码方式。在类型是属于字符、字符串这等类型的后面加上CHARSETutf8
例:

DELIMITER$$


USE`mall`$$


DROPPROCEDUREIFEXISTS`Prc_AddArticleInfo`$$


CREATEDEFINER=`root`@`localhost`PROCEDURE`Prc_AddArticleInfo`(snamesTEXTCHARSETutf8,contentsTEXTCHARSETutf8,createdtimesDATETIME,voidtimesDATETIME,urlsTEXTCHARSETutf8,cagsVARCHAR(32)CHARSETutf8,usernamesVARCHAR(32)CHARSETutf8)

BEGIN

DECLAREuseridsINTDEFAULT0;

DECLAREgenreidsINTDEFAULT0;

DECLAREsnameTEXTCHARSETutf8DEFAULTNULL;

DECLAREscontentTEXTCHARSETutf8DEFAULTNULL;

DECLAREscreatedtimeTEXTCHARSETutf8DEFAULTNULL;

DECLAREsvoidtimeTEXTCHARSETutf8DEFAULTNULL;

DECLAREsurlTEXTCHARSETutf8DEFAULTNULL;

DECLAREusernameVARCHAR(32)CHARSETutf8DEFAULTNULL;

DECLAREcagVARCHAR(32)CHARSETutf8DEFAULTNULL;

SETsname=snames;

SETscontent=contents;

SETscreatedtime=createdtimes;

SETsvoidtime=voidtimes;

SETsurl=urls;

SETusername=usernames;

SETcag=cags;

SELECTidINTOgenreidsFROMgenresWHERENAME=cag;

SELECTadmin_user_idINTOuseridsFROMadmin_userWHEREadmin_user_name=username;

INSERTINTOarticle(NAME,content,createdtime,voidtime,url,genreid,userid)VALUES(sname,scontent,screatedtime,svoidtime,surl,genreids,userids);

END$$


DELIMITER;


2.mysql报Fatalerrorencounteredduringcommandexecution的解决办法

连接字符串里加上

AllowUserVariables=True

解决。

否则时不时的报错,存储过程名长一点也报错,又有时报有时不报,参数传1位数就正常2位数就报错等……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: