发新话题
打印

为什么mysql事务执行不了?

为什么mysql事务执行不了?

php代码片断:      
/*-----数据库连接参数--*/      
$host="localhost";      
$user="root";      
$pwd="xxx";      
$database="luntan";      
/*-----数据库连接-*/      
$db=mysql_connect($host,$user,$pwd);      
$sql="START    TRANSACTION;      
                     SELECT    @A:=MAX(iTopicId)    FROM    lun_topic;      
                     INSERT    INTO    lun_topic    VALUES(@A+1,'主题','内容','作者',NOW(),1);      
                     COMMIT;";      
$result=mysql_db_query($database,$sql);//该句执行不了,也不报错

TOP

mysql4之前不支持事务的吧,5以后才支持的

TOP

isam,myisam,heap数据表类型不支持事务。

TOP

$sql="LOCK  TABLES  lun_topic  write;  
           SELECT  @A:=MAX(iTopicId)  FROM  lun_topic;  
           INSERT  INTO  lun_topic  VALUES(@A+1,主题','内容','作者',NOW(),1);//少了一个单引号  
           UNLOCK  TABLES;";  
基本上是没有错了。不过不具备事务处理机制的,用这种方法有时也不能解决的。

TOP

将数据库类型改为innoDB  

$sql1  =  "set  auto_commite=0";  
$sql2  =  "begin";  
$sql3  =  "update......";  
$sql4  =  "update.......";  
$sql5  =  "commite";  
$sql6  =  "rollback";  

mysql_query($sql1);  
mysql_query($sql2);  
mysql_query($sql3);  
mysql_query($sql4);  
if(mysql_errno)  
       mysql_query($sql5);  
else  
       mysql_query($sql6);

TOP

发新话题