MySql开启InnoDB功能的方法

今晚学习事务控制的时候,发现执行到错误的时候,不会进行回滚,正确的照样执行,错误就报错,搞了很久不知道是什么原因,到网上搜了一下,原来数据表类型要为InnoDBDBD才支持事务控制,但问题是要怎么转换类型,又在网上搜了搜,找到了一句SQL语句:ALTER   TABLE   TABLENAME   type   =   InnoDB;接下来问题又来了,执行SQL语句的时候报错:#1289 – The ‘InnoDB’ feature is disabled; you need MySQL built with ‘InnoDB’ to have it working 翻译了一下,说是没有开启InnoDB…..

好吧,我认了,又搜了搜,找到了下面的解决方法:
1、先停止mysql服务(找到mysql目录下的“mysql_servicefix.bat”文件,点击就可以停止服务);
2、找到mysql目录下的“my.cnf”文件,右键用记事本打开,找到“skip-innodb”这一行,在前面加上一个#号;
3、找到mysql目录下的“mysql_serviceinstall.bat”文件,点击就可以启动mysql服务;
提示:如果你用了phpmyadmin,停止mysql服务又重新开启后,可能会进不去phpmyadmin,建议重启一下电脑,我的就是这种情况;
4、开启InnoDB后,执行一下“ALTER   TABLE   TABLENAME   type   =   InnoDB;”这句SQL语句,将TABLENAME改成你要转换的数据表即可,或者用phpmyadmin进入到相应的数据库——数据表——操作选项卡——表选项里有个“Storage Engine”,选择InnoDB,然后执行一下就OK了(前提是要开启InnoDB后才会有些选项);

20130902017

经过一番折腾,终于搞定了,事务控制也生效了,该回滚的也滚了,顺便把代码贴一下吧:

<?php
header("Content-Type; text/html; charset=utf-8");
$mysqli=new MYSQLi('localhost','root','root','my_sql');
if($mysqli->connect_error) {
die('数据库连接失败');
}
if (!$mysqli->query('SET NAMES UTF8')) {
die('字符集设置错误');
}
$mysqli->autocommit(FALSE);

$sql1="UPDATE user SET age=age-2 WHERE id=1";
$sql2="UPDATE user SET age=age+2 WHERE id=2";

$a1=$mysqli->query($sql1);
$a2=$mysqli->query($sql2);

if (!$a1 || !$a2) {
echo "失败,回滚".$mysqli->error;
$mysqli->rollback();
}else {
$mysqli->commit();
//echo "成功,提交";
}
$mysqli->close();
?>
分享到:
标签:DBD,InnoDB,mysql数据库,开启InnoDB,
^_^ 亲爱的客官,如果您觉得本文对您有好处,请移动你的鼠标点点下面的广告或上面的或右上角的,非常感谢~ ^_^

报歉!评论已关闭.