我正在开发一个 Delphi XE7 应用程序,其数据存储在在线 Mysql 数据库中。对于数据库访问,我使用 FireDAC。因为该应用程序可以同时在多台计算机上使用,所以我需要在更改表格时得到通知,因此我可以更新每台计算机上显示的信息。 FireDAC 有一个名为 TFDEventAlerted 的组件,听起来正是我需要的。但是这个组件在激活(调用Register)时报错:[FireDAC][Phys][MySQL]-303。不支持功能。 我不确定这意味着什么,但在阅读了更多关于该组件的信息后,似乎 Mysql 不支持此类事件?如果是这样:谁能告诉我是否有另一种解决方案可以实现同样的目的?
任何帮助将不胜感激,因为我似乎找不到好的解决方案。
最佳答案
native MySQL 没有您希望使用的推送通知功能。要完成这项工作,您需要进行轮询(以定期运行查询)以查找更改。
如果您的系统规模使得轮询不可行,则有一些方法可以克服此限制。您可以向您的 MySQL 服务器添加一个用户定义的函数,例如发送消息的函数:https://github.com/mysqludf/lib_mysqludf_stomp#readme
如果您没有 MySQL 服务器,这将不起作用;大多数托管服务不允许您安装 UDF。
或者,您可以构建消息发布/订阅应用。使用 Amazon 简单排队服务或 rabbitmq 可以很容易地做到这一点。但它与您可能习惯的系统设计不同。
关于mysql - 如何在 Delphi 中接收 MySQL 数据库通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32551908/