mysql - 如何在 Delphi 中接收 MySQL 数据库通知?

标签 mysql delphi firedac

我正在开发一个 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/

相关文章:

mysql - 创建模式时如何解决外键约束错误

MySQL 查询不在 SQLite 中运行

mysql - 从外键 MySQL 获取行值

c# - 如何从连接到PC的手机发送和读取短信

Delphi:DBexpress 比 Firedac 快吗

delphi - Delphi-如何检查数据集是否已获取所有行?

php - ü 等外来字符不要进入 Mysql

delphi - 围绕位图调整 Canvas 大小?

c++ - Delphi:从外部 DLL (C++) 调用函数后发生访问冲突

delphi - TFDMoniFlatFileClientLink 不规则地不跟踪到文件