2016-10-19 4 views
1

Попытка выяснить, как транзакция работает в пакете phinx. Вот мой код миграции, и он не работает. Я использую mysql, и все в порядке с phinx.yml. Поэтому таблица acme создается, пока таблица fail не работает, и записи не найдены в таблице phinxlog. Итак, когда я побежал phinx migrate У меня ошибка SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'acme' already exists. Итак, как я могу использовать транзакции? Я не нашел каких-либо документы об этом, помогите мне пожалуйста))Сделка с Phinx не работает

public function up() 
{ 
    $this->getAdapter()->beginTransaction(); 
    $this->table('acme')->addColumn('name', 'string')->create(); 
    $this->table('fail')->addColumn('lal', 'failme')->create(); 
    $this->getAdapter()->commitTransaction(); 
} 
+0

все столы имеют двигатель 'InnoDB' –

ответ

2

Операции применяются только к данным (DML) изменяется с MySQL. Вы не можете «транслировать» изменения определения данных (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?

Смежные вопросы