表存储引擎的Zend_Db / PDO测试

时间:2010-01-27 21:27:11

标签: php mysql zend-framework pdo

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

  1. 删除表格中的所有记录
  2. 将数据从文件或字符串加载到表中
  3. 并不困难,但是由于在这个序列开头的apocolyptic删除id喜欢使用一个事务,所以如果在这个过程中出现任何问题我可以回滚。但是,此过程更新的一些表是MyIsam,它不支持事务。

    所以主要问题是:是否有一种更简单的方法来检测给定表的存储引擎而不是执行show create table然后执行少量解析来获取存储引擎 - 即。我希望避免这种额外的查询。

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

    此外我还没有使用Zend_Db_Table - 只是适配器(Pdo_Mysql)。或者我非常愿意使用原始PDO,如果它能以某种方式允许更优雅的解决方案。

    (我对这个特定的实现没有兴趣使用mysqlimport有很多原因我不打算进入,所以我只想说它不是一个选项)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

不知道这对你是否仍然有用,但是这个回应呢:

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