Symfony Doctrine Migration $connection没有权利



我需要在模式迁移的同时进行数据迁移。我正在使用 preUp()postUp() 函数来获取数据、应用架构迁移,然后使用一些旧数据更新新列。

由于我要接触至少 6000 条记录,因此我想使用原始查询。我没有来自ContainerAwareInterface的任何依赖关系。在我的本地副本上,我做了这样的事情:

$SQL = "SELECT column FROM table;";
$statement = $this->connection->prepare($SQL);
$statement->execute();
$results = $statement->fetchAll(); 
//continue with $results etc

这运行正常。当我尝试在生产上运行此迁移时,我收到以下消息:

Migration 20161117165412 failed during Pre-Checks. Error SQLSTATE[42000]: Syntax error or access violation: 1142 SELECT command denied to user 'valid_username'@'valid_host' for table 'table'

应用程序有一个定义的连接/实体管理器,站点工作正常。我真的不明白这里可能有什么影响?我确定一些配置,但我没有想法。

我已经检查了mysql.user中设置的权限,并且"valid_username"的所有权限都设置为N,这很奇怪,因为我希望应用程序在读取权限上也会失败。

如果没有来自ContainerAwareInterface的依赖关系,那么在parameters.yml中定义的Symfony的DBAL连接就不可用。例如,检查CreateDatabaseDoctrineCommand从容器获取连接。

我假设您继承了从SymfonyComponentConsoleCommand继承的迁移类,因此最简单的解决方案是继承SymfonyBundleFrameworkBundleCommandContainerAwareCommand和容器,或者默认连接是可访问的。

另一种解决方案是创建自己的DoctrineDBALConnection对象,该对象在其构造方法中采用数据库连接参数。

相关内容

  • 没有找到相关文章

最新更新