mysql select & count 不匹配,流氓脚本?

问题描述 投票:0回答:1

我正在使用 php 将大型 .txt 文件中的行导入到共享服务器上的 mysql。我提前创建了mysql的结构来匹配.txt格式,并添加了一个自动递增的id。

mysql文件已更新。 然而,程序超时了,结果令人不安。

使用 phpMyAdmin:

  1. 最后一个ID是161,867。
  2. “从 my_sql_file 中选择 COUNT(*)”是 161,867。
  3. “SELECT * FROM my_sql_file”是 155,737。

此外,在几个小时内多次检查这些结果后,结果 #1 和 2 仍保持原来的数字。然而,结果#3 不断变化。有时总数会更高,有时会更低。

技术支持怀疑有恶意脚本更新了文件。 在写入 mysql 之前我没有清理数据。 数据中的脚本可能是问题所在吗?还有其他解释吗?

错误日志中没有错误。结果有数十到数千的差异,并且在过程结束后继续变化。

php mysql select count malware
1个回答
0
投票

听起来您的 MySQL 表中的预期行数与实际行数之间可能存在差异。以下是此问题的一些潜在原因:

导入不完整:导入过程可能已被中断或提前终止,导致 .txt 文件中的某些行无法导入到 MySQL 表中。发生这种情况的原因有多种,例如服务器超时、脚本执行限制或网络问题。

数据清理:您提到在将数据写入 MySQL 之前没有对其进行清理。如果 .txt 文件中的数据包含特殊字符、格式错误的条目或意外值,则可能会导致导入过程中出现问题,导致某些行被跳过或无法正确导入。

并发问题:如果多个进程或脚本同时访问或修改MySQL表,可能会导致数据不一致或不正确。如果在导入过程运行时有其他脚本或应用程序访问同一个表,则可能会发生这种情况。

数据损坏:如果 MySQL 表或数据库文件由于磁盘错误、硬件问题或软件错误而损坏,则可能会导致数据出现差异。运行数据库修复和完整性检查可以帮助识别和修复任何损坏问题。

要解决此问题,您可以尝试以下步骤:

验证 .txt 文件的完整性并确保所有行均完整且格式正确。 检查导入脚本是否存在导入过程中可能发生的任何错误或异常。确保正确实施错误处理和日志记录以捕获任何问题。 查看 MySQL 日志中是否有与导入过程或数据库操作相关的任何错误或警告。 在将 .txt 文件导入 MySQL 之前,请考虑对其进行清理,以防止数据出现任何意外问题。 监视 MySQL 表中数据的任何意外更改或不一致,并在必要时进一步调查。 如果问题仍然存在,您可能需要让托管提供商的支持团队或数据库管理员参与调查并解决问题。它们可以帮助您诊断可能导致数据差异的服务器或数据库配置的任何潜在问题。

© www.soinside.com 2019 - 2024. All rights reserved.