gpt4 book ai didi

mysql - 如果数据库连接关闭或数据库服务器关闭立即执行查询会发生什么

转载 作者:行者123 更新时间:2023-11-30 21:52:22 25 4
gpt4 key购买 nike

假设这个简单的查询。

var knex = require("knex")(knexConfig);
var insert1 = {col1: "a4", col2: "b4", col3: "c4"};

knex.insert(insert1).into("test").then(function (id) {
console.log(id);
})
.finally(function() {
knex.destroy();
});

如果数据库服务器在执行插入查询后立即关闭或连接关闭,会发生什么情况?是存储数据返回错误还是不存储数据返回错误?

最佳答案

如果插入查询已执行,但结果尚未发送到客户端,数据将存储在数据库中,但 knex 将抛出错误,即连接丢失。

如果那是在交易中完成的,那么数据就不会被存储,knex 就会抛出同样的错误。

在这种情况下,您可能应该在事务中进行插入,这样您就会知道如果出现错误,数据不在数据库中......但是仍然有可能在将行添加到数据库之后,例如 express 失败将结果返回给 REST 调用,您的前端再次无法确定是否插入了数据,因为出现错误。

所以处理这种情况的最好方法是相信如果一切都成功的话数据就在那里,如果有错误,用户应该检查数据是否被添加(在现实生活中如果没有关键只是假设没有添加数据并重试,如果相同的数据没有被发布两次是至关重要的,请确保数据库模式有一些限制来阻止它。

关于mysql - 如果数据库连接关闭或数据库服务器关闭立即执行查询会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46695883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com