驱动SQL性能测试,关于update和insert into 的写法有什么不同
本帖最后由 曾淳淳 于 2015-12-3 17:46 编辑loadrunner 连MYsql 测试,更新和插入数据的写法有什么不同,按照教程,更新是可以执行了,但是改成insert into 执行就失败,为什么?求助....~~~
----------------------------------------------------------------------
贴出action部分的源代码:
Action()
{
char chQuery;
MYSQL *Mconn;
lr_load_dll("libmysql.dll"); // 引入libmysql的dll
Mconn = lr_mysql_connect(MYSQLSERVER, MYSQLUSERNAME, MYSQLPASSWORD, MYSQLDB, atoi(MYSQLPORT));//connection mysql
//sprintf(chQuery, "update kk_commoditytype set typeName='衣服2' where typeId=1;");
sprintf(chQuery, "inster into kk_commoditytype (`typeId`,`typeName`) values(`5`,`衣服2`);"
);
lr_mysql_query(Mconn, chQuery);//执行sql
lr_mysql_disconnect(Mconn);// close connection
return 0;
}
-------------------------
执行后提示:
Running Vuser...
Starting iteration 1.
Starting action Action.
Error -3: row not found 'inster into type (`type_id`,`type_name`) values(`55`,`衣服2`);' - 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 'inster into type (`type_id`,`type_name`) values(`55`,`衣服2`)' at line 1
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Error: C interpreter run time error: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h (126):Error -- memory violation : Exception ACCESS_VIOLATION received.
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Notify: CCI trace: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): mysql_close(0x03913118)
.
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Notify: CCI trace: Action.c(16): lr_mysql_disconnect(0x03913118)
.
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Notify: CCI trace: Compiled_code(0): Action()
.
Ending Vuser...
你的sql语句可能需要转义, 参考一下我的:
//连接mysql库
Mconn=lr_mysql_connect(MYSQLSERVER,MYSQLUSERNAME,MYSQLPASSWORD,MYSQLDB,atoi(MYSQLPORT));
//方法在 Ptt_MySql.h 中, MYSQL *lr_mysql_connect(char *server, char *user, char *password, char *database, int port)
// 使用的mysql语句
sprintf(chQuery, "select * from tb_website_news_notice where 1=1 and type = '4' order by view_count DESC limit 2;"); //这里抓取2条
lr_mysql_query(Mconn, chQuery);
// 方法在 Ptt_MySql.h 中,int lr_mysql_query(MYSQL *Mconn, char *query)
// 获取sql语句查询到的值,抓取需要的cell格; 这里抓取2列
lr_save_string(row.cell, "id");
lr_save_string(row.cell, "view_count");
lr_save_string(row.cell, "id1");
lr_save_string(row.cell, "view_count1");
// 判断,访问newsId做匹配, 选择性的写log
result=strcmp(lr_eval_string("{news}"),lr_eval_string("{id}")); //
if ( result == 0 )
{}
else
{}
是insert ,你语句写错了。 sql语句写错了 你语法错误,“inster ”应该是“insert” jingzizx 发表于 2015-12-4 11:02
你语法错误,“inster ”应该是“insert”
insert 动到了,我重新贴下结果,因为还是不行,请指点:
Error -3: row not found 'insert into type ('type_id','type_name') values('55','111');' - 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 ''type_id','type_name') values('55','111')' at line 1
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Error: C interpreter run time error: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h (126):Error -- memory violation : Exception ACCESS_VIOLATION received.
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Notify: CCI trace: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): mysql_close(0x03ca0b70)
.
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Notify: CCI trace: Action.c(17): lr_mysql_discon joe45 发表于 2015-12-4 10:54
你的sql语句可能需要转义, 参考一下我的:
//连接mysql库
这种写法我有试过,可以,但是抓取矩阵显示的写法有点繁琐。如果要抓取更多的数据有什么其他的写法可以推荐下么? gaha 发表于 2015-12-4 10:55
是insert ,你语句写错了。
改了,运行结果我重新贴出来了,还是不行;
还有昨天运行update语句正常,就是中文更新到数据库里面显示为乱码;今天执行update语句,带中文就执行不了,提示找不到
-------------
sprintf(chQuery, "update type set type_name='衣服' where type_id=1;"
---------------
Starting action Action.
Error -3: row not found 'update type set type_name='衣服' where type_id=1;' - Incorrect string value: '\xD2\xC2\xB7\xFE' for column 'type_name' at row 1
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Error: C interpreter run time error: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h (126):Error -- memory violation : Exception ACCESS_VIOLATION received.
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Notify: CCI trace: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): mysql_close(0x03880b70)
. 曾淳淳 发表于 2015-12-4 11:33
改了,运行结果我重新贴出来了,还是不行;
还有昨天运行update语句正常,就是中文更新到数据库里面显示 ...
错误不是不一样了吗?
把“衣服”改成"clothes",可以之后再解决中文编码问题。 update是执行更新表中属性值信息;UPDATE TABLE_NAMESET column_name1 = VALUE WHRER column_name2 = VALUE
insert是插入一个属性值信息; INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) gaha 发表于 2015-12-4 11:36
错误不是不一样了吗?
把“衣服”改成"clothes",可以之后再解决中文编码问题。
就是update语句中,不写衣服写clothes 运行成功,但是把clothes改成衣服会报错:
Error -3: row not found 'update type set type_name='衣服' where type_id=1;' - Incorrect string value: '\xD2\xC2\xB7\xFE' for column 'type_name' at row 1
C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h(126): Error: C interpreter run time error: C:\\Program Files (x86)\\HP\\LoadRunner\\include/Ptt_Mysql.h (126):Error -- memory violation : Exception ACCESS_VIOLATION received.
以上是update的提示
------------------------------------------------------------------------------------
如果是insert 则提示:
Error -3: row not found 'insert into type ('type_id','type_name') values('55','111');' - 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 ''type_id','type_name') values('55','111')' at line 1
曾淳淳 发表于 2015-12-4 13:55
就是update语句中,不写衣服写clothes 运行成功,但是把clothes改成衣服会报错:
Error -3: row not fou ...
你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一起来就可以了。 gaha 发表于 2015-12-4 14:05
你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一 ...
不能,插入后去查询数据库,也是乱码
----------------
刚看了一篇写
mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
可解决字符集问题,但是没有写怎么用,一时没有找到解决办法 gaha 发表于 2015-12-4 14:05
你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一 ...
不能,插入后去查询数据库,也是乱码
----------------
刚看了一篇写
mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
可解决字符集问题,但是没有写怎么用,一时没有找到解决办法 gaha 发表于 2015-12-4 14:05
你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一 ...
mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
网上有一篇文章说这个可以解决字符集,但是没写怎么用
说把这个放在链接数据库语句前即可 joe45 发表于 2015-12-4 10:54
你的sql语句可能需要转义, 参考一下我的:
//连接mysql库
mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
请问这个解决字符集问题的要怎么加进来? 曾淳淳 发表于 2015-12-4 15:32
不能,插入后去查询数据库,也是乱码
----------------
刚看了一篇写
说明你的数据库驱动编码本身就设置错了,默认是latin编码,不支持汉字。
你到mysql的官网下载一个客户端程序,链接你的库,然后找到表字段的属性,把需要汉字内容的字段改成gbk。
gaha 发表于 2015-12-4 16:37
说明你的数据库驱动编码本身就设置错了,默认是latin编码,不支持汉字。
你到mysql的官网下载一个客户端 ...
我也这么怀疑过,但是我将mysql的编码改成utf8,jbk,jb2312 结果都一样;
我用jmeter 执行结果是对的;
跟我下载的mysql lib库会不会有关系? 曾淳淳 发表于 2015-12-5 13:59
我也这么怀疑过,但是我将mysql的编码改成utf8,jbk,jb2312 结果都一样;
我用jmeter 执行结果是对的;
...
用客户端改最简单,自己钻研吧
joe45 发表于 2015-12-4 10:54
你的sql语句可能需要转义, 参考一下我的:
//连接mysql库
我没太看懂lr_save_string(row.cell,'..')这部分的 数组不是没有声明怎么直接就能用,而且.cell是什么意思
页:
[1]