当我使用Schema :: create方法时,我正在尝试创建一个事务,但它不起作用。在我的应用程序中,我必须在不同的数据库上创建动态表,如果出现错误,我必须回滚。 Laravel启动异常,但回滚不起作用。我正在使用laravel 5.1
答案 0 :(得分:0)
我假设你正在使用MySQL。 DDL语句(create table,alter table等)无法在事务中回滚。
来自docs:
某些语句无法回滚。通常,这些语句包括数据定义语言(DDL)语句,例如创建或删除数据库的语句,创建,删除或更改表或存储例程的语句。
您应该将交易设计为不包含此类声明。如果您在无法回滚的事务的早期发出语句,然后另一个语句失败,则在这种情况下,通过发出ROLLBACK语句无法回滚事务的完整效果。