Попытка выяснить, как транзакция работает в пакете 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();
}
Транзакции применяются только к изменениям данных (DML) с помощью mysql. Вы не можете «проводить» изменения определения данных (DDL).
http://dev.mysql.com/doc/refman/5.7/en/cannot-roll-back.html
Но другие БД могут (при определенных условиях).
Можно ли откатить операторы CREATE TABLE и ALTER TABLE в основных базах данных SQL?
Других решений пока нет …