注意如果经常多人同时操作数据库时,最好锁定表.锁:lock tables tableName
LOCK TABLES tbl_name [AS alias] {READ | [READ LOCAL] | [LOW_PRIORITY] WRITE}
            [, tbl_name {READ | [LOW_PRIORITY] WRITE} ...]解:unlock tables  tableName具体锁定方式语法见mysql帮助

解决方案 »

  1. <?
    $link=mysql_connect("localhost","root","");
    mysql_select_db("test");
    mysql_query("lock tables test write");//只有当前进程能够写入
    mysql_query("insert into test values('test','test')");
    mysql_query("unlock tables");//解锁
    ?>
    一个线程如果再次锁定一个表,原来的锁定自动释放。一个线程与服务器断开,锁定也会自动释放。在你上面的代码中操作数据表的代码部分的前面加上锁定表的语句:
    mysql_query("lock tables tableName write");
    在完成操作数据表后加上:
    mysql_query("unlock tables");说的够清除了吧
      

  2. 有点象asp中的application成员的读写。应该是临界资源访问的问题~~~
      

  3. $this->sql_list->sql_query("LOCK TABLES table_content WRITE,table_list WRITE,table_list_index WRITE");...
    中间加入你上面的代码
    ...$this->sql_list->sql_query("UNLOCK TABLES");如果还不行,那就是你程序的问题了。
      

类似问题 »