触发学说迁移
Trigger in Doctrine Migrations
我正在尝试在学说迁移中创建一个相当复杂的触发器 class:
https://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql
第一个冲动是将整个触发代码放在一个大块中并添加它
与:
public function up(Schema $schema)
{
$this->addSql($triggerSqlInABigBlob);
}
但是迁移失败了
SQLSTATE[42601]: Syntax error: 7 ERROR: cannot insert multiple commands into a prepared statement
这甚至可以在学说迁移中进行管理吗?是否有解决方法/最佳实践来做到这一点?
Doctrine 的 AbstractMigration
中的 addSql
需要一个 SQL 命令或多个 SQL 命令的数组。您发送的是包含多个 SQL 命令的字符串,这是不允许的。你可以试试这个:
public function up(Schema $schema)
{
$this->addSql(explode(';',$triggerSqlInABigBlob));
}
这应该将字符串转换成一个数组,其中每个元素都是一个 SQL 命令。不过评论可能有问题。
我正在尝试在学说迁移中创建一个相当复杂的触发器 class:
https://github.com/2ndQuadrant/audit-trigger/blob/master/audit.sql
第一个冲动是将整个触发代码放在一个大块中并添加它
与:
public function up(Schema $schema)
{
$this->addSql($triggerSqlInABigBlob);
}
但是迁移失败了
SQLSTATE[42601]: Syntax error: 7 ERROR: cannot insert multiple commands into a prepared statement
这甚至可以在学说迁移中进行管理吗?是否有解决方法/最佳实践来做到这一点?
AbstractMigration
中的 addSql
需要一个 SQL 命令或多个 SQL 命令的数组。您发送的是包含多个 SQL 命令的字符串,这是不允许的。你可以试试这个:
public function up(Schema $schema)
{
$this->addSql(explode(';',$triggerSqlInABigBlob));
}
这应该将字符串转换成一个数组,其中每个元素都是一个 SQL 命令。不过评论可能有问题。