0
我正在为我们的mysql服务器编写一个基础结构库。 我必须处理的场景之一是从MySQL服务器暂时断开连接。在mysql上处理(ER_QUERY_INTERRUPTED)的策略
测试场景是从数据库100000附近开始,然后停止数据库并将其恢复。
在这种情况下,我对在停止期间运行的查询有意识地收到ER_QUERY_INTERRUPTED错误。 的问题是:
我可以承担有关分贝(如不启动查询)的状态东西或认为这是由于未定义behaiviour落这个问题倒链用户?
只要您在交易中执行此操作,就可以安全地重新尝试查询。事务中的断开连接将导致SQL服务器上的自动回滚。如果您处于事务之外,则查询_可能已提交,或_可能不是_。再次插入可能会导致重复的数据。 –
@ColinMorelli:如果有人使用事务性存储引擎,比如'InnoDB',那么所有的操作都是“在一个事务中”(虽然它们可能会自动提交)。 – eggyal
@eggyal我的意思是一个非自动提交事务。如果你没有_explicitly_发送'COMMIT',你不能确定在断开连接期间是否执行了查询。 –