试图找出交易在phinx包中的运作方式。这是我的迁移代码,但它不起作用。我使用mysql
,phinx.yml
一切正常。因此,当表acme
失败并且在fail
表中找不到记录时,将创建表phinxlog
。所以,当我运行phinx migrate
我错误SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'acme' already exists
时。那么,我该如何使用交易?我没有找到任何关于它的文档,请帮助我))
public function up()
{
$this->getAdapter()->beginTransaction();
$this->table('acme')->addColumn('name', 'string')->create();
$this->table('fail')->addColumn('lal', 'failme')->create();
$this->getAdapter()->commitTransaction();
}
答案 0 :(得分:3)
事务仅适用于使用mysql进行数据(DML)更改。你不能交易'数据定义更改(DDL)。
http://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html
但是其他数据库可以(在某些条件下)。
Is it possible to roll back CREATE TABLE and ALTER TABLE statements in major SQL databases?