一、需求
性能测试中,需要模拟大量用户并发,登录平台,但是同一个账号模拟不够真实。
可以在数据库的用户表中,批量插入大量用户(避免手动注册)测试时,循环读入这些用户信息,进行大数据并发登录操作
二、实现
#创建存储过程
create procedure insertuser1()
#开始存储过程
begin
#设置循环变量
declare i int;
#变量赋初值
set i = 0;
#连接数据,concat('user01',i)
#循环赋值
while i<=10 do
#在iwebshop_user表里,插入用户名和密码
insert into iwebshop_user(username,password) values(concat('users',i),'123456');
set i=i+1;
end while; #结束循环
#结束存储过程
end
在数据的查询中,新建查询,执行这个代码,是创建了一个存储过程,打开存储过程,执行这个存储过程
三、出现的错误:
1、concat写错
运行存储过程,报错信息
1305 - FUNCTION iwebshop.contact does not exist
pbl80Mjk3NjEzOQ==,size_16,color_FFFFFF,t_70)
2、MySQL语法解释错误
create procedure insertuser2()
begin
declare i int;
set i = 0;
while i<=600 do
insert into iwebshop_user(username,password) values(concat('users',i),'123456');
set i=i+1;
end while;
end
语法很简单创建存储过程却报错
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘’ at line 3
原因:
不是语法的错误,是MYSQL语法解析器的原因。MYSQL 解析器解析遇到“;”分号,就结束本次执行,所以就造成了很多语法错误。
解决方案是:加入一个结束符
DELIMITER |
create procedure insertuser2()
begin
declare i int;
set i = 0;
while i<=600 do
insert into iwebshop_user(username,password) values(concat('users',i),'123456');
set i=i+1;
end while;
end|
DELIMITER ;
四、存储过程中加入参数
DELIMITER |
create procedure insertuser2(num int)
begin
declare i int;
set i = 0;
while i<=num do
insert into iwebshop_user(username,password) values(concat('user_dabai',i),'123456');
set i=i+1;
end while;
end|
DELIMITER ;