gpt4 book ai didi

mysql - 如何正确处理 node-mysql 连接池中的连接持久性事物

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

如果我使用 node-mysql 的连接池功能,这不会在我的应用程序中造成问题,因为在 connection.end() 之后会重新使用连接吗?这就是我担心的原因:当您在 SQL 中定义变量或启动事务时,该变量或事务会一直存在,直到连接关闭。由于连接从未真正关闭,而是被重新使用,变量和事务可以渗透到另一个不期望变量或事务存在的例程中;它期待一个新的连接。

变量可能会带来大问题;一个例程永远不能安全地假设一个变量是未定义的,因为它与磨损有关。

如果一个例程在调用 end() 之前无法回滚或提交事务,事务可能会带来更大的问题。如果使用此连接的下一个例程不处理事务,则所有查询都将附加到事务并停止,永远不会执行。在编写我的应用程序时,我可以小心一点,这样的错误永远不会发生,但错误会发生,如果确实发生,调试起来会非常困难(我不知道哪个例程错误处理了连接,糟糕糟糕)。

因此,这些是我在考虑使用池化时的一些顾虑。当然,我不是唯一想到这些问题的人,所以如果您愿意的话,请阐明如何正确处理池化连接。 :)

非常感谢。

最佳答案

所有事务都将在单个连接的上下文中发生。结束或终止连接后,您将无法再对该事务进行操作。一般模式是打开、查询、关闭,除非您有一个长时间运行的事务,否则您不会遇到查询或变量渗入其他连接的任何问题。

在长时间运行的事务中,您必须管理该连接对象以确保它存在并且仅供在该事务中运行的代码使用。

关于mysql - 如何正确处理 node-mysql 连接池中的连接持久性事物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18116830/

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