mysql_rollback() 不工作

标签 mysql c linux

我在上一篇文章中换句话问过这个问题,但没有得到具体答案。所以我重新表述一下。以下代码中的回滚不起作用。你能告诉我出了什么问题吗:

//Creating and populating a table

C_P_table()
{
    MYSQL *conn;

      conn = mysql_init(NULL);
      if (mysql_real_connect(conn, "localhost", "root",
                "password", "testdb", 0, NULL, 0) == NULL) {
            printf("Error2 %u: %s\n", mysql_errno(conn), mysql_error(conn));
            exit(1);
        }


      if (mysql_query(conn, "CREATE TABLE writers(name VARCHAR(25))")) {
            printf("Error3 %u: %s\n", mysql_errno(conn), mysql_error(conn));

        }
      mysql_autocommit(conn,0);
      if (mysql_query(conn,"START TRANSACTION")) {
                printf("Error4 %u: %s\n", mysql_errno(conn), mysql_error(conn));
      }
      mysql_query(conn,"START TRANSACTION");
      mysql_query(conn, "INSERT INTO writers VALUES('Leo Tolstoy')");
      mysql_query(conn, "INSERT INTO writers VALUES('Jack London')");
      mysql_query(conn, "INSERT INTO writers VALUES('Honore de Balzac')");
      mysql_query(conn, "INSERT INTO writers VALUES('Lion Feuchtwanger')");
      mysql_query(conn, "INSERT INTO writers VALUES('Emile Zola')");

      if(!mysql_rollback(conn))
          printf("Roll Back successful\n");
//    mysql_query(conn,"ROLLBACK"); //doesn't work neither

      mysql_close(conn);

}

int main(int argc, char **argv)
{
    C_P_table();
}

最佳答案

我的猜测是您正在使用 MyISAM 表,通常是 MySQL 中的默认表类型。

所以换行

if (mysql_query(conn, "CREATE TABLE writers(name VARCHAR(25))"))

if (mysql_query(conn, "CREATE TABLE writers(name VARCHAR(25)) ENGINE = INNODB"))

看看发生了什么。

参见:http://dev.mysql.com/doc/refman/5.0/en/storage-engines.html

关于mysql_rollback() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6592975/

相关文章:

c - 在 C 中动态声明变量/结构

linux - 模拟硬件路由器上的用户负载

linux - 需要在终端(Linux/shell 文件)中使用管道命令的帮助

Python - 我的 MySQL 查询中的错误在哪里?

mysql - 比较 MySQL 中的两个 ISO 日期时间字符串

c - 使用 Ulfius 实现 REST API - URI 定义

c++ - 链接到依赖于第三方库的库

linux - 一系列文件的 pscp 命令

php - 从 3 个不同的表中获取最近的帖子,在 codeigniter 中将结果限制为 5 个

mysql - 从 SQL Server 迁移到 MySQL