SQLSTATE[HY000]:在 symfony 中创建表的一般错误

Posted

技术标签:

【中文标题】SQLSTATE[HY000]:在 symfony 中创建表的一般错误【英文标题】:SQLSTATE[HY000]: General error create table in symfony 【发布时间】:2019-01-04 07:36:25 【问题描述】:

我有这个代码:

try
   $aws = $this->getContainer()->get(Service::class);
   $query = 'DROP TABLE IF EXISTS newtable;CREATE TABLE newtable LIKE actions;';
   $aws->executeQuery($query);
catch (\Exception $exception)
  $output->writeln("Can't create new tables, with message :");
  $output->writeln(sprintf("%s", $exception->getMessage()));

还有Service类函数executeQuery

public function executeQuery($query, $multiple = true, $fetch = true)

    $res = $this->conn->prepare($query);
    $result = $res->execute();

    return ($fetch) ? ($multiple ? $res->fetchAll(\PDO::FETCH_ASSOC) : $res->fetch(\PDO::FETCH_ASSOC)) : $result;

表已创建,但我收到错误消息: SQLSTATE[HY000]: General error。我不明白删除此错误的问题是什么。感谢您的帮助。

【问题讨论】:

Symfony 使用原则,不是吗?看这个问题,可能与你想要的有关:***.com/questions/14041484/mysql-with-symfony2 @Mickael Leger 建议使用 Doctrine 不是必须的 General error ,你能提供更多信息吗?看来您与数据库的连接有问题,您确定连接一切正常吗?尝试一些简单的查询? 正如我所说的表已创建,所以连接良好 【参考方案1】:

你不应该在更新/插入/删除/创建表等不返回数据的语句上使用 fetch 或 fetchAll

这可能是问题所在。

变化

$aws->executeQuery($query);

$aws->executeQuery($query, false, false );

应该有帮助,因为因此只会返回 $res->execute() 的结果。

【讨论】:

是的,这就是问题所在。谢谢

以上是关于SQLSTATE[HY000]:在 symfony 中创建表的一般错误的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[HY000]:在 symfony 中创建表的一般错误

Symfony 错误:[PDOException] SQLSTATE[HY000] [2002] 没有这样的文件或目录

Symfony 2.8(Wamp):[Doctrine\DBAL\Exception\ConnectionException] PDOException:SQLSTATE[HY000] [2002]

Symfony4 / Docker:SQLSTATE [HY000] [2002]连接被拒绝

Symfony 4 |教义 |驱动程序发生异常:SQLSTATE[HY000] [2002] Connection denied

symfony2 中的 MySQL (PDO) 出错:驱动程序中发生异常:SQLSTATE [HY000] [1049]