首页 > 解决方案 > 在 Laravel 应用程序中将数据库从 Postgre 更改为 MySQL 导致超时/Symfony 异常

问题描述

没有在网上找到任何有用的东西。

我无法在 Plesk 云服务器上运行 Postgre,所以我尝试在我的 Windows 开发系统上切换到 MySQL。

我更改了 .env 和 database.php 中的相应条目,并取消了 php.ini 中 mysqli/pdo_mysql 行的注释。

mysqli 似乎根本不起作用,因为它导致查询/PDO 异常/“找不到数据库驱动程序”,就像根本没有激活 mysql 扩展一样。

pdo_mysql 进行了更改,但导致超时,然后是长 html 输出,从

 Symfony \ Component \ Debug \ Exception \ FatalErrorException (E_UNKNOWN)

超过 30 秒的最大执行时间

并专注于

C:\Users\....\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php


    /**
     * Create a new PDO connection.
     *
     * @param  string  $dsn
     * @param  array   $config
     * @param  array   $options
     * @return \PDO
     */
    public function createConnection($dsn, array $config, array $options)
    {
        list($username, $password) = [
            $config['username'] ?? null, $config['password'] ?? null,
        ];

        try {
            return $this->createPdoConnection(
                $dsn, $username, $password, $options
            );
        } catch (Exception $e) {
            return $this->tryAgainIfCausedByLostConnection(
                $e, $dsn, $username, $password, $options
            );
        }
    }
Arguments
"Maximum execution time of 30 seconds exceeded"

Apache error.log 看起来很干净。MySQL dll 存在于 /ext 中。使用 postgre 一切正常。在我重新设置所有内容之前,也许有人有一个想法。谢谢

标签: phpmysqllaravelsymfony

解决方案


好吧,问题是端口号在 .env 中仍然设置为 postgre。即使页面上没有数据库访问权限,Laravel 最初也会尝试建立连接。


推荐阅读