php - 在 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 一切正常。在我重新设置所有内容之前,也许有人有一个想法。谢谢
解决方案
好吧,问题是端口号在 .env 中仍然设置为 postgre。即使页面上没有数据库访问权限,Laravel 最初也会尝试建立连接。
推荐阅读
- python-3.x - Python 将 4 个元组的列表转换为三个 2 个元组,加入元组中的最后一个元素
- json - 使用环境变量生成字段并将它们插入到对象中
- hibernate - 带有 FETCH JOIN 的 HQL 构造函数
- c++ - gcc 和 cl 与嵌套和全局命名空间中同名的朋友类的区别
- nginx - 我无法使用 ffmpeg 创建 RTMP 流
- wordpress - 需要在 WooCommerce 中更改销售徽章文本
- javascript - 速记 React 道具使用 transform-react-constant-elements Babel 插件导致参考错误
- flutter - 转换相机捕捉图像,如 camscanner 图像抖动
- python - 验证准确率没有增加,过度拟合?
- android - 如何使用 adb 授予应用程序管理员权限?