【问题标题】:Data getting wiped off from MySQL Database [closed]数据从 MySQL 数据库中删除 [关闭]
【发布时间】:2019-09-16 13:13:37
【问题描述】:

我有一个 java swing 应用程序,它连接到 MySQL 数据库并完美地执行事务。也有为交易生成的单数。大多数情况下,数据确实被提交,没有任何问题。但是在某些情况下,以前提交的数据会完全从数据库中删除,并且向上的数字也会回滚。例如,如果我已经完成了一张发票编号从 1 到 200 的发票,那么第二天早上当我检查销售报告时,它只显示 ID 为 1 到 100 的交易。其余数据丢失。但由于我已经打印了从 1 到 200 的所有发票的发票副本,我确信交易确实发生了。 MySQL中有什么我需要注意的吗?升级到 MySQL 版本 8 会有帮助吗?我担心机器中存在某种恶意软件,所以我什至加强了防病毒软件,但这并没有帮助。我也设置了一个非常强大的 MySQL DB 密码。似乎没有什么能帮助防止这种情况发生。

【问题讨论】:

  • 根据您在此处发布的内容,该问题无法回答。 SQL 注入或在您的服务器上运行的一些恶意代码,或十几种其他情况中的任何一种都可能适用。
  • 我建议:在其他机器上复制你的项目(测试项目)(我没有互联网),然后尝试重现问题。您也可以在此处跳过代码的一些关键部分,您认为这是错误的原因。

标签: java mysql jdbc commit


【解决方案1】:

例如,如果我已经完成了一张发票编号从 1 到 200 的发票,那么第二天早上当我查看销售报告时,它只会显示 ID 为 1 到 100 的交易。其余数据丢失。但是由于我已经打印了从 1 到 200 的所有发票的发票副本,我可以确定交易确实发生了。

您所说的并不能证明交易已提交。一种可能性是发票是在交易期间打印的;即在你提交之前。

如果不检查您的代码,我们就无法消除这种可能性。像这样的可能性还有很多。

在 MySQL 中有什么需要我注意的吗?

我知道 MySQL 中没有任何东西会导致已提交的事务自发回滚。

升级到 MySQL 8 版会有帮助吗?

它不太可能会有所帮助。更重要的是,如果您不知道真正的原因,您将无法确定它是否会产生任何影响。


这里有一些可能的解释。可能还有其他人。

  1. 代码中的错误;例如见上文。
  2. 某些计划任务(您可能已经忘记或不知道)存在错误。
  3. 正在恢复旧版本的数据库。
  4. 以前的员工/开发人员在您的代码中留下了“定时炸弹”。
  5. 黑客(或前任员工或现任员工)有权访问系统并“与您作对”。
  6. 恶意软件/病毒(尽管一般恶意软件不太可能导致这种行为)。请注意,如果您已经被感染,“收紧”您的 AV 可能无济于事。
  7. 一些我从未听说过的奇怪的 MySQL 错误。

我建议如下:

  • 检查系统的所有帐户是否安全,并关闭任何不应该存在的帐户,
  • 检查系统访问日志等是否存在未经授权的访问或意外访问的迹象
  • 使用 MySQL 企业审计 - https://dev.mysql.com/doc/refman/8.0/en/audit-log.html
  • 实现一些东西,例如,对某些表进行定期快照,然后您可以将其用于以后的分析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    • 2020-01-06
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多