Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite错误:无法在具有非常基本的表的事务中启动事务_Sqlite_Sqltransaction - Fatal编程技术网

SQLite错误:无法在具有非常基本的表的事务中启动事务

SQLite错误:无法在具有非常基本的表的事务中启动事务,sqlite,sqltransaction,Sqlite,Sqltransaction,我是SQL的新手,我正在使用SQLite编辑器学习。所以我创建了两个非常简单的表。这段代码直接来自Linkedin learning SQL essential training,我正在使用推荐的SQLite编辑器 CREATE TABLE widgetInventory( id INTEGER PRIMARY KEY, description TEXT, onhand INTEGER NOT NULL); CREATE TABLE widgetSales( i

我是SQL的新手,我正在使用SQLite编辑器学习。所以我创建了两个非常简单的表。这段代码直接来自Linkedin learning SQL essential training,我正在使用推荐的SQLite编辑器

CREATE TABLE widgetInventory(
    id INTEGER PRIMARY KEY,
    description TEXT,
    onhand INTEGER NOT NULL);

CREATE TABLE widgetSales(
    id INTEGER PRIMARY KEY,
    inv_id INTEGER,
    quan INTEGER,
    price INTEGER);
然后我用一些数据更新widgetInventory:

INSERT INTO widgetInventory (description, onhand) VALUES ('rock', 25);
INSERT INTO widgetInventory (description, onhand) VALUES ('paper', 25);
INSERT INTO widgetInventory (description, onhand) VALUES ('scissors', 25);
接下来,我想用sale更新widgetSales表,并更新widgetInventory表以记录现有库存的减少

我不明白为什么在运行它时会出现错误,因为它与课程中的情况完全相同

[06:18:04] Error while executing SQL query on database 'test': cannot start a transaction within a transaction

但是,我可以分别运行INSERT和UPDATE行,它们执行我希望它们执行的操作。

在SQLite编辑器中,您可能需要删除或注释掉这两个事务前后的所有代码

BEGIN TRANSACTION;
  INSERT INTO widgetSales ( inv_id, quan, price ) VALUES ( 1, 5, 500 );
  UPDATE widgetInventory SET onhand = ( onhand - 5 ) WHERE id = 1;
END TRANSACTION;

BEGIN TRANSACTION;
  INSERT INTO widgetInventory ( description, onhand ) VALUES ( 'toy', 25 );
ROLLBACK;
否则它将不会执行事务


除此之外,可能在某个地方写了一个错误。在.txt文件中复制和粘贴没有给我该事务错误,可以正常执行该事务。

在SQLite编辑器中,您可能必须删除或注释掉这两个事务前后的所有代码

BEGIN TRANSACTION;
  INSERT INTO widgetSales ( inv_id, quan, price ) VALUES ( 1, 5, 500 );
  UPDATE widgetInventory SET onhand = ( onhand - 5 ) WHERE id = 1;
END TRANSACTION;

BEGIN TRANSACTION;
  INSERT INTO widgetInventory ( description, onhand ) VALUES ( 'toy', 25 );
ROLLBACK;
否则它将不会执行事务


除此之外,可能在某个地方写了一个错误。在.txt文件中复制和粘贴没有给我那个事务错误,可以正常执行事务。

显然,正在运行-END事务;-在运行之前,整个事务似乎都正常工作


我认为某种程度上,SQL认为事务已经发生了。不过,我不确定具体在哪里。因此,要停止它,您必须先结束事务,然后再继续课程。

显然,运行-end transaction;-在运行之前,整个事务似乎都正常工作


我认为某种程度上,SQL认为事务已经发生了。不过,我不确定具体在哪里。因此,要停止它,您必须先结束事务,然后再继续课程。

也有同样的错误,我的问题是我只突出显示了第一行,所以SQLLite启动了事务,但没有完全运行它。我所做的就是运行EndTransaction,突出显示整个代码块,然后运行它,它工作得很好。Lite中一定有语法问题,无法运行完整的块本身。

也有同样的错误,我的问题是我只突出显示了第一行,所以SQLLite启动了事务,但没有完全运行它。我所做的就是运行EndTransaction,突出显示整个代码块,然后运行它,它工作得很好。Lite中一定存在语法问题,无法运行完整块本身。

无论您使用什么与数据库交互,都显然已经开始了事务。查看它的文档,看看是否有任何方法可以改变这种行为?@Shawn我最初在开始事务和结束事务之间做了一些比较。我修复了这个问题,再次运行,并得到了无法启动错误。我尝试删除并重新输入表和信息,但仍然出现错误。它是否挂起在初始开始事务上?无论您使用什么与数据库交互,显然都已经开始了事务。查看它的文档,看看是否有任何方法可以改变这种行为?@Shawn我最初在开始事务和结束事务之间做了一些比较。我修复了这个问题,再次运行,并得到了无法启动错误。我尝试删除并重新输入表和信息,但仍然出现错误。是否在初始开始事务时挂起?