在执行这样一段php语句的时候报错transaction abort for($j=0;$j<count($selectscriptresult);$j++){
$scriptid=$selectscriptresult[$j]['id'];
$wats_id=$productName.'_sc_'.$scriptid;
$updateidsql="update `script` set wats_script_id='$wats_id' where id=$scriptid";
$insertscriptmodel->query($updateidsql);

} 就是根据本条记录的一个字段的内容修改另外一个字段的内容,语句本身应该是没有问题的
记录数大概有1700个,执行到大概1130条的时候报错我用的是本地wamp搭建出的mysql,是不是需要修改某个配置?
my.ini中有这条信息:不知道是否有关系#innodb_lock_wait_timeout = 50
请高人解答,谢谢

解决方案 »

  1.   

    检查你的MYSQL的错误日志,看其中相关的错误信息,这样可以有依据的分析。
      

  2.   


    mysql.log里面一点有用的信息都没有,我再试试
      

  3.   

    mysql.log中一点关于这个abort操作的内容都没有。
    有没有人给提示一下这个问题啊?
      

  4.   


    版主,并不是我没看啊,我的my.ini中指定了log文件
    log-error=c:/wamp/logs/mysql.log
    我查看了mysql.log,确实没有任何跟这个错误相关的内容啊。我把这个文件全清了,然后mysql重启,复现问题,得到的全部log就是110310 13:34:57 [Note] wampmysqld: Normal shutdown110310 13:34:57 [Note] Event Scheduler: Purging the queue. 0 events
    110310 13:34:57  InnoDB: Starting shutdown...
    110310 13:34:59  InnoDB: Shutdown completed; log sequence number 0 49771357
    110310 13:34:59 [Warning] Forcing shutdown of 1 plugins
    110310 13:34:59 [Note] wampmysqld: Shutdown complete110310 13:35:29 [Note] Plugin 'FEDERATED' is disabled.
    110310 13:35:29  InnoDB: Started; log sequence number 0 49771357
    110310 13:35:30 [Note] Event Scheduler: Loaded 0 events
    110310 13:35:30 [Note] wampmysqld: ready for connections.
    Version: '5.1.36-community-log'  socket: ''  port: 3306  MySQL Community Server (GPL)
      

  5.   

    哦,是这样,对不起,是我理解错。从你的日志上看,MYSQL上并没有发生错误。 是不是你的PHP程序上有问题。错误信息是什么?
      

  6.   

    那我也只能猜了,
    my。ini中的【mysqld】中加入
    max_allowed_packet = 64M
    试试
      

  7.   

    php程序就是我在顶楼中写的那样,逻辑上看没问题。并且并不是从开始就报错,是已经执行了很多之后才报错,
    报错很简单,就是
    server reported:-1 transaction abortedmysql没有死,还能正常运行
    我怀疑是有什么配置文件有限制,那段php的意思就是查找符合要求的记录,修改其中的一个字段。大概共需要修改1700条记录,修改到1100多条的时候报错
      

  8.   

    可以猜测是是SQL执行中的语句错误,比如碰到一些非法的字符等。这些错误在--log-error不会体现
    建议在你的PHP程序中添加扑获错误的语句
      

  9.   


    测试了一下,还真不是sql的错误,我把报错时应该执行的语句重新手工执行,是正确的。
    这个transaction abort是extjs报出来的,是因为通信错误造成的,貌似是那一瞬间,mysql连接有问题。
    有什么mysql的配置可以对这个起作用吗?我改改试试。
      

  10.   

    把windows上wamp的数据库换到了linux上,这个问题没了,看来还是数据库访问的问题或者是操作系统的差异