51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3145|回复: 19
打印 上一主题 下一主题

[求助] 驱动SQL性能测试,关于update和insert into 的写法有什么不同

[复制链接]
  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2015-12-3 17:36:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 曾淳淳 于 2015-12-3 17:46 编辑

    loadrunner 连MYsql 测试,更新和插入数据的写法有什么不同,按照教程,更新是可以执行了,但是改成insert into 执行就失败,为什么?求助....~~~
    ----------------------------------------------------------------------
    贴出action部分的源代码:
    Action()
    {
            char chQuery[128];
            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...


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-4 10:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2015-12-4 10:54:59 | 只看该作者
    你的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[0][0].cell, "id");
    lr_save_string(row[3][0].cell, "view_count");
    lr_save_string(row[0][1].cell, "id1");
    lr_save_string(row[3][1].cell, "view_count1");


    // 判断,访问newsId做匹配, 选择性的写log
    result=strcmp(lr_eval_string("{news}"),lr_eval_string("{id}")); //
    if ( result == 0 )
    {}

    else
    {}

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2015-12-4 10:55:33 | 只看该作者
    是insert ,你语句写错了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-4 10:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2015-12-4 10:58:31 | 只看该作者
    sql语句写错了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    15 小时前
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    5#
    发表于 2015-12-4 11:02:26 | 只看该作者
    你语法错误,“inster ”应该是“insert”
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    6#
     楼主| 发表于 2015-12-4 11:23:55 | 只看该作者
    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
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    7#
     楼主| 发表于 2015-12-4 11:27:28 | 只看该作者
    joe45 发表于 2015-12-4 10:54
    你的sql语句可能需要转义, 参考一下我的:

    //连接mysql库

    这种写法我有试过,可以,但是抓取矩阵显示的写法有点繁琐。如果要抓取更多的数据有什么其他的写法可以推荐下么?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    8#
     楼主| 发表于 2015-12-4 11:33:03 | 只看该作者
    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)
    .
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2015-12-4 11:36:30 | 只看该作者
    曾淳淳 发表于 2015-12-4 11:33
    改了,运行结果我重新贴出来了,还是不行;
    还有昨天运行update语句正常,就是中文更新到数据库里面显示 ...

    错误不是不一样了吗?
    把“衣服”改成"clothes",可以之后再解决中文编码问题。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-8-4 11:02
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    10#
    发表于 2015-12-4 13:18:54 | 只看该作者
    update是执行更新表中属性值信息;UPDATE TABLE_NAME  SET column_name1 = VALUE WHRER column_name2 = VALUE
    insert是插入一个属性值信息; INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    11#
     楼主| 发表于 2015-12-4 13:55:42 | 只看该作者
    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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2015-12-4 14:05:14 | 只看该作者
    曾淳淳 发表于 2015-12-4 13:55
    就是update语句中,不写衣服写clothes 运行成功,但是把clothes改成衣服会报错:
    Error -3: row not fou ...

    你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一起来就可以了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    13#
     楼主| 发表于 2015-12-4 15:32:25 | 只看该作者
    gaha 发表于 2015-12-4 14:05
    你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一 ...

    不能,插入后去查询数据库,也是乱码
    ----------------
    刚看了一篇写
    mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
    可解决字符集问题,但是没有写怎么用,一时没有找到解决办法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    14#
     楼主| 发表于 2015-12-4 15:32:16 | 只看该作者
    gaha 发表于 2015-12-4 14:05
    你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一 ...

    不能,插入后去查询数据库,也是乱码
    ----------------
    刚看了一篇写
    mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
    可解决字符集问题,但是没有写怎么用,一时没有找到解决办法
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    15#
     楼主| 发表于 2015-12-4 15:33:55 | 只看该作者
    gaha 发表于 2015-12-4 14:05
    你直接操作数据库的时候,插入有中文字符的记录能成功吗?如果能成功,就修改lr运行时里编码的内容,统一 ...

    mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
    网上有一篇文章说这个可以解决字符集,但是没写怎么用
    说把这个放在链接数据库语句前即可
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    16#
     楼主| 发表于 2015-12-4 15:57:27 | 只看该作者
    joe45 发表于 2015-12-4 10:54
    你的sql语句可能需要转义, 参考一下我的:

    //连接mysql库

    mysql_options(Mconn, MYSQL_SET_CHARSET_NAME, "GBK");
    请问这个解决字符集问题的要怎么加进来?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2015-12-4 16:37:23 | 只看该作者
    曾淳淳 发表于 2015-12-4 15:32
    不能,插入后去查询数据库,也是乱码
    ----------------
    刚看了一篇写

    说明你的数据库驱动编码本身就设置错了,默认是latin编码,不支持汉字。
    你到mysql的官网下载一个客户端程序,链接你的库,然后找到表字段的属性,把需要汉字内容的字段改成gbk。

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜您获得测试积点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-6-6 10:14
  • 签到天数: 22 天

    连续签到: 1 天

    [LV.4]测试营长

    18#
     楼主| 发表于 2015-12-5 13:59:17 | 只看该作者
    gaha 发表于 2015-12-4 16:37
    说明你的数据库驱动编码本身就设置错了,默认是latin编码,不支持汉字。
    你到mysql的官网下载一个客户端 ...

    我也这么怀疑过,但是我将mysql的编码改成utf8,jbk,jb2312 结果都一样;
    我用jmeter 执行结果是对的;
    跟我下载的mysql lib库会不会有关系?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2015-12-7 11:17:44 | 只看该作者
    曾淳淳 发表于 2015-12-5 13:59
    我也这么怀疑过,但是我将mysql的编码改成utf8,jbk,jb2312 结果都一样;
    我用jmeter 执行结果是对的;
    ...

    用客户端改最简单,自己钻研吧
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2016-3-4 13:43:39 | 只看该作者
    joe45 发表于 2015-12-4 10:54
    你的sql语句可能需要转义, 参考一下我的:

    //连接mysql库

    我没太看懂lr_save_string(row[0][0].cell,'..')  这部分的    数组不是没有声明怎么直接就能用,而且.cell是什么意思
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 23:29 , Processed in 0.078816 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表