使用  show table status 顯示:Name    Type     Row_format  c_test    MyISAM   Dynamic

解决方案 »

  1.   

    使用 show variables like 'have_%'  時顯示
    Variable_name  Value  
    have_bdb        YES 
    have_gemini     NO 
    have_innodb     NO 
    have_isam       YES 
    have_raid       NO 
    have_ssl        NO 
      

  2.   

    好象mysql4.0才支持事务处理吧
      

  3.   

    跟你的sql没关系,Some non-transactional changed tables couldn't be rolled back这句话是说非事务的代码修改了表数据,所以无法回滚
      

  4.   

    代碼很簡單的。
                -------------------------------------------------
                con.setAutoCommit(false);
                String strSql="INSERT INTO c_test (group_code, group_name) VALUES (?, ?)";
                PreparedStatement stmt=con.prepareStatement(strSql);
                stmt.setString(1,"8");
                stmt.setString(2,"8");
                stmt.executeUpdate();
                con.rollback();
                con.setAutoCommit(true);
                ----------------------------------------------
      

  5.   

    不用再试了,3.23的MySQL是不支持事务的,据说4.0.13还是什么版本才支持,结帖吧.
    顺便一句,con.rollback();应该放在try{..}catch里,你的代码本身也就有问题.找点JDBC的资料看看吧.
      

  6.   

    纠正,con.rollback();放在catch的{}里,用于失败时回滚而setAutoCommit应该放在finally里,这样才是标准的用法.
      

  7.   

    不管是3.23还是4.0必须是MAX版的才能支持回滚,而且安装了max版后必须按照下面修改my.cnf文件才能是innodb生效,IP地址目录名照着自己的配置改
    ---------文件开始------------This File was made using the WinMySQLAdmin 1.3 Tool 
    #2002-6-11 23:15:49 #Uncomment or Add only the keys that you know how works. 
    #Read the MySQL Manual for instructions [mysqld] 
    #bind-address=218.242.22.100 
    #language=C:/mysql/share/your language directory 
    #slow query log#= 
    #tmpdir#= 
    #port=3306 
    #set-variable=key_buffer=16M 
    basedir=C:/mysql 
    datadir=D:/mysql/data 
    default-character-set=gbk innodb_data_file_path = ibdata1:10M:autoextend 
    innodb_data_home_dir = c:/mysql/ibdata 
    set-variable = innodb_mirrored_log_groups=1 
    innodb_log_group_home_dir = c:/mysql/iblogs 
    innodb_flush_log_at_trx_commit=1 
    innodb_log_arch_dir = c:/mysql/iblogs 
    innodb_log_archive=0 
    set-variable = innodb_buffer_pool_size=80M 
    set-variable = innodb_additional_mem_pool_size=10M 
    set-variable = innodb_file_io_threads=4 
    set-variable = innodb_lock_wait_timeout=50 
    set-variable = innodb_log_files_in_group=3 
    set-variable = innodb_log_file_size=30M 
    set-variable = innodb_log_buffer_size=8M 
    #set-variable = key_buffer=16M [WinMySQLadmin] Server=C:/mysql/bin/mysqld-max-nt.exe 
    user=admin 
    password=admin 
    QueryInterval=10
      

  8.   

    多謝大家的指教,經過艱苦的努力,終于找到了解決之法:
    --------------------------------------------------
    CREATE TABLE c_test(
      id char(1) NOT NULL default '',
      name varchar(16) NOT NULL default '',
      PRIMARY KEY  (id),
      KEY id (id)
    ) TYPE=BerkeleyDB;
    --------------------------------------------------
    關鍵在於最後一行。  TYPE=BerkeleyDB;如果是4.0之後則使用 TYPE=InnoDB;大家可以試試.