【问题标题】:"Random" SQL Error - General 1030, -1 from storage engine“随机”SQL 错误 - 常规 1030,来自存储引擎的 -1
【发布时间】:2013-03-20 23:05:08
【问题描述】:

完全错误:

Fatal Error: Uncaught exception 'PDOException' with message 
'SQLSTATE[HY000]: General error -1 from storage engine'
in C:\MyApacheDir\MyPHPFile.php:33

第 33 行是我的 PDO 准备语句的 ->execute()。这种行为并不总是发生;当执行完全相同的操作时,它可能不会发生。

我的查询:

// Make new permissions
$sql = "INSERT INTO permissions (
      doc_id,
      user_id,
      write_access 
    ) VALUES (
      :doc_id,
      :user_id,
      :write_access
    );";
$stmt = $dbConn->prepare($sql);

ForEach ($permitArr as $permit) {
  $stmt->bindValue(":doc_id", $_POST['doc_id'], PDO::PARAM_INT);
  $stmt->bindValue(":user_id", $permit[0], PDO::PARAM_INT);
  $stmt->bindValue(":write_access", $permit[1], PDO::PARAM_INT);
  $stmt->execute();
}

其中permitArr 包含Array[index][info] 形式的权限数组,其中[info] 是分别对应于用户和访问级别的0 或1。

如前所述,此错误仅在某些时候发生;完全相同查询的其他迭代(字面意思是传递相同的信息)工作正常。

有人知道-1 错误代码是由什么引起的吗?可能只是搜索能力差,但我在任何地方都找不到。

我正在使用 IE8 中的 MySQL 5.6 使用 Apache 2.2 localhost。

【问题讨论】:

  • MySQL 服务器的日志中有什么内容?看起来您引用的错误来自 PHP 日志,但 MySQL 日志可能会提供一些额外的见解。

标签: mysql pdo


【解决方案1】:

看起来很可疑。我找不到那个数字的错误,所以这通常意味着有一个外部因素在起作用。我会尝试以下方法:

1.) 创建一个新表并在新表上尝试代码。

2.) 使用新表创建新架构并再次尝试代码。

3.) 在您的驱动器上运行 chkdsk 以确保没有任何集群问题。

4.) 重新启动。

【讨论】:

  • 等我有时间再试试。我会尽快报告。此表中的条目并不多(实际上,在出错时只有 3 个)。没有其他表有这个问题。希望这是本地化的(因为我实际上只是在本地开发,然后迁移到服务器)。
  • 我做了一个TRUNCATE TABLE permissions,到目前为止,这似乎已经解决了它......我的猜测是该表中的某些内容已损坏,所以当TRUNCATE 删除它并重新创建它时它再次起作用。很奇怪,这只是一个间歇性问题。
猜你喜欢
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 2020-07-22
  • 2013-07-29
  • 2020-07-06
  • 1970-01-01
  • 2012-03-24
相关资源
最近更新 更多