LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 806|回复: 2

默认安装的mysql 是不是不支持事务

[复制链接]
发表于 2010-8-22 23:24:13 | 显示全部楼层 |阅读模式
贴一段java 代码 ,功能是向表中插入一条记录,,
但是并没真的插入,我后面写了回滚语句 ,
结果出人意表,表中竟然有了相应的数据

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Mysql {
        Connection conn;
        Statement stmt;
        ResultSet rs;

        public Mysql() {
                try {// com.micorosoft.jdbc.sqlserver.SQLServerDriver

                        Class.forName("com.mysql.jdbc.Driver")
                                        .newInstance();
                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                } catch (IllegalAccessException ex) {
                        ex.printStackTrace();
                } catch (InstantiationException ex) {
                        ex.printStackTrace();
                }

                try {
                        String url = "jdbc:mysql://localhost:3306/test";
                        String user = "root";
                        String password = "root";

                        conn = DriverManager.getConnection(url, user, password); // 获得连接
//                        stmt = conn.createStatement(); // 获得执行SQL语言的容器
//                        String sql = "select * from Student";
//                        rs = stmt.executeQuery(sql); // 获得结果集
//                        while (rs.next()) {
//                        //        System.out.println(rs.getString(1)); // 拿到结果集中的第一列
//                        }

                        stmt=conn.createStatement();
                        conn.setAutoCommit(false);
               
                        stmt.executeUpdate("insert into Student (name,age) values ('',11)");
                        conn.rollback();
                } catch (SQLException e) {
                        e.printStackTrace();

                }
        }

        public static void main(String[] args) {
                new Mysql();
        }
}
发表于 2010-8-22 23:41:34 | 显示全部楼层
你设定了
conn.setAutoCommit(false);
但是,你程序中却没有手工Commit的语句。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-8-24 22:28:03 | 显示全部楼层
我看了,linux 下装的mysql 默认的表engine 不是innodb ,不支持事务,
需要指定表的engine
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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