首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony Doctrine Migration $connection没有权限

问Symfony Doctrine Migration $connection没有权限
EN

Stack Overflow用户
提问于 2017-02-11 06:23:09
回答 1查看 334关注 0票数 0

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

因为我要接触至少6000条记录,所以我想使用原始查询。我没有任何来自ContainerAwareInterface的依赖。在我的本地副本上,我这样做:

代码语言:javascript
复制
$SQL = "SELECT column FROM table;";
$statement = $this->connection->prepare($SQL);
$statement->execute();
$results = $statement->fetchAll(); 
//continue with $results etc

这运行得很好。当我尝试在prod上运行此迁移时,我收到以下消息:

代码语言:javascript
复制
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,这很奇怪,因为我预计应用程序在读取权限时也会失败。

EN

回答 1

Stack Overflow用户

发布于 2017-02-11 19:58:41

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

我假设您有从Symfony\Component\Console\Command继承的迁移类,因此最简单的解决方案是分别继承Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand和容器。默认连接将可访问。

另一种解决方案是创建自己的Doctrine\DBAL\Connection对象,该对象在其构造方法中接受DB连接参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42169599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档