1.在创建存储过程成功后,使用call 存储过程名执行时报错:

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)错误。

解决方法:检查存储过程使用到的表格的编码方式,包括字段和表格本身。最后统一编码方式。在类型是属于字符、字符串这等类型的后面加上 CHARSET utf8
例:
DELIMITER $$
 
USE `mall`$$
 
DROP PROCEDURE IF EXISTS `Prc_AddArticleInfo`$$
 
CREATE DEFINER=`root`@`localhost` PROCEDURE `Prc_AddArticleInfo`(snames TEXT CHARSET utf8,contents TEXT CHARSET utf8,createdtimes DATETIME,voidtimes DATETIME,urls TEXT CHARSET utf8,cags VARCHAR(32) CHARSET utf8,usernames VARCHAR(32) CHARSET utf8)
BEGIN
DECLARE userids INT DEFAULT 0;
DECLARE genreids INT DEFAULT 0;
DECLARE sname TEXT CHARSET utf8 DEFAULT NULL;
DECLARE scontent TEXT CHARSET utf8 DEFAULT NULL;
DECLARE screatedtime TEXT CHARSET utf8 DEFAULT NULL;
DECLARE svoidtime TEXT CHARSET utf8 DEFAULT NULL;
DECLARE surl TEXT CHARSET utf8 DEFAULT NULL;
DECLARE username VARCHAR(32) CHARSET utf8 DEFAULT NULL;
DECLARE cag VARCHAR(32) CHARSET utf8 DEFAULT NULL;
SET sname=snames;
SET scontent=contents;
SET screatedtime=createdtimes;
SET svoidtime=voidtimes;
SET surl=urls;
SET username=usernames;
SET cag=cags;
SELECT id INTO genreids FROM genres WHERE NAME=cag;
SELECT admin_user_id INTO userids FROM admin_user WHERE admin_user_name=username;
INSERT INTO article(NAME,content,createdtime,voidtime,url,genreid,userid) VALUES(sname,scontent,screatedtime,svoidtime,surl,genreids,userids);
END$$
 
DELIMITER ;
 

连接字符串里加上

Allow User Variables=True

解决。

否则时不时的报错,存储过程名长一点也报错,又有时报有时不报,参数传1位数就正常2位数就报错等……

mysql创建存储过程中的问题的更多相关文章

  1. [转]MYSQL 创建存储过程

    MySQL 存储过程是从 MySQL 5.0 开始增加的新功能.存储过程的优点有一箩筐.不过最主要的还是执行效率和SQL 代码封装.特别是 SQL 代码封装功能,如果没有存储过程,在外部程序访问数据库 ...

  2. MySql创建存储过程,并使用事件定时调用

    一.使用命令行创建存储过程的步骤 :参数详情参考 https://www.mysqlzh.com/ 1.模板  delimiter $$ # 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ' ...

  3. mysql 创建存储过程

    mysql 创建存储过程 实例一: CREATE PROCEDURE cp_test() BEGIN declare a int; declare b int; ; ; select a,b; END ...

  4. mysql -- 创建存储过程 往数据表中新增字段

    需求: 往某数据库的某个表中新增一个字段(若该字段已存在,则不做操作:若该字段不存在,则新增) 百度了n久,没有符合要求的例子,只有参考加自己琢磨,最终终于给弄出来了,以下是几个版本的更迭 第一版: ...

  5. iBatis调用存储过程以及MySQL创建存储过程

    首先是MySQL中创建存储过程的SQL -- 列出全部的存储过程 SHOW PROCEDURE STATUS; -- 查看一个已存在的存储过程的创建语句,假设此存储过程不存在,会提示SQL错误(130 ...

  6. mysql 创建存储过程 创建1000w测试数据表

    存储过程:The stored procedure 结构 CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE stored_procedure_n ...

  7. Mysql向存储过程中传递中文参数变成乱码的解决方案

    今天做程序需要用到一个存储过程,然后用php程序调用.  存储过程如下: delimiter $$ CREATE PROCEDURE disagree_upgrade_detail(a int,b t ...

  8. mysql创建存储过程及调用

    创建存储过程简单示例: DELIMITER //CREATE PROCEDURE ccgc()BEGINSELECT * FROM TEXT;SELECT * FROM s_user;END//DEL ...

  9. mysql 创建存储过程报错

    在创建存储过程前把结束符定义为 delimiter // 然后再创建就不会报错

随机推荐

  1. 低压差稳压器AMS1585

    (1)高效线性稳压. (2)输出高达4.6A,最高输入电压15V,推荐最低压差1.5V(最低1.35V),最大压差12V. (3)两种封装:TO220(直插式),TO230(贴片). 典型电路如下图所 ...

  2. Codevs 3305 水果姐逛水果街Ⅱ 倍增LCA

    题目:http://codevs.cn/problem/3305/  时间限制: 2 s   空间限制: 256000 KB   题目等级 : 钻石 Diamond 题解       题目描述 Des ...

  3. EasyWebServer编写CGI程序的环境变量

    示例: SERVER_SOFTWARE=EasyWebServer/1.9 SERVER_PROTOCOL=HTTP/1.1 SERVER_PORT= SERVER_NAME=aozima-noteb ...

  4. SQL-LINQ-Lambda语法对照

    SQL LINQ Lambda SELECT *FROM HumanResources.Employee from e in Employees select e Employees .Select ...

  5. python实现应用程序在右键菜单中添加打开方式

    最近项目组开发的一个小工具想要在右键菜单中添加打开方式,以有道云笔记为例进行了需求拆解和代码编写 1.需求拆解: 如何实现手动添加右键菜单的打开方式: Step1:打开注册表编辑器,Win+R-> ...

  6. thinkphp 获取客户端ip地址方法

    /** * 获取客户端IP地址 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 * @param boolean $adv 是否进行高级模式获取(有 ...

  7. TortoiseSVN搭建本地版本库及简单操作使用

    TortoiseSVN是windows上一款著名的版本控制软件,对于我们管理自己的代码,特别是对一个团队来说,非常重要. 本文探讨的是如何搭建本地的版本库. (1)安装TortoiseSVN之后需要创 ...

  8. Access中出现改变字段“自己主动编号”类型,不能再改回来!(已解决)

    Access中出现改变字段"自己主动编号"类型,不能再改回来! (已解决) 一次把access中的自增字段改成了数值,再改回自增时,提示:在表中输入了数据之后,则不能将不论什么字段 ...

  9. docker 查看容器详细

    http://www.docker.org.cn/book/docker/checking-running-image-12.html

  10. Linux多线程——使用互斥量同步线程

    前文再续,书接上一回,在上一篇文章: Linux多线程——使用信号量同步线程中,我们留下了一个如何使用互斥量来进行线程同步的问题,本文将会给出互斥量的详细解说,并用一个互斥量解决上一篇文章中,要使用两 ...