【问题标题】:Zend_Db/PDO Testing for the Table Storage Engine表存储引擎的 Zend_Db/PDO 测试
【发布时间】:2011-01-10 03:48:10
【问题描述】:

背景简介 - 我正在编写一个通过 cron 运行的特殊导入管理器。基本操作是:

  1. 从表中删除所有记录
  2. 将文件或字符串中的数据加载到表中

不难,但是由于这个序列开头的世界末日删除,我喜欢使用事务,所以如果在这个过程中出现任何问题,我可以回滚。但是,此过程更新的某些表是不支持事务的 MyIsam。

所以主要的问题是:有没有比执行show create table 更简单的方法来检测给定表的存储引擎,然后进行少量解析以获取存储引擎 - IE。我想避免这个额外的查询。

其次:我还没有真正尝试过这个,因为我还在写一些其他适合的部分 - 所以 Zend_Db 可能只是忽略 beginTransactioncommitrollback,如果有问题的表不支持?

我也没有为此使用 Zend_Db_Table - 只是适配器(Pdo_Mysql)。或者,如果可以以某种方式提供更优雅的解决方案,我完全愿意使用原始 PDO。

(我对在这个特定的实现中使用 mysqlimport 不感兴趣,原因有很多我不会进入,所以让我们说它根本不是一个选项)

【问题讨论】:

    标签: php mysql zend-framework pdo


    【解决方案1】:

    我建议通过重命名原始表并在成功完成后将其删除来解决您的问题;)

    【讨论】:

    • 但这并没有让我获得存储引擎......没有它我不能对两个引擎中的每一个都使用条件逻辑。因此,如果您的解决方案恰好是 InnoDb 并且我将其重命名 - 如果它有其他表引用它,它们的引用将更改为新的表名,不是吗?
    【解决方案2】:

    不知道这是否仍然与您相关,但此响应如何:

    How can I check MySQL engine type for a specific table?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      相关资源
      最近更新 更多