gpt4 book ai didi

php - Openshift MySQL Cartgridge 上的连接超时

转载 作者:行者123 更新时间:2023-11-29 22:28:24 24 4
gpt4 key购买 nike

我正在部署一个 PHP 应用程序,该应用程序在 Openshift 中使用 Doctrine 作为 ORM。在我的 post_deploy 操作 Hook 中,我运行 Doctrine orm schema-tool 来更新数据库,但出现连接超时错误。由于我对 Openshift 非常陌生,在 Openshift 上设置数据库的最佳方法是什么?

更新我有两个齿轮,一个用于应用程序,另一个用于 MySQL。我通过 ssh 进入应用程序并运行

doctrine orm:schema-tool:update

这会导致连接超时错误。如果我尝试

  mysql -h $OPENSHIFT_MYSQL_DB_HOST
-p $OPENSHIFT_MYSQL_DB_PORT
-u $OPENSHIFT_MYSQL_DB_USERNAME
-P $OPENSHIFT_MYSQL_DB_PASSWORD
-

输入 Openshift 通知的 MySQL 密码后出现提示并随后出现错误。

Enter password: 
ERROR 1049 (42000): Unknown database '<obsfucated_password>'

UDP日期2:正如下面 Martin 指出的一个不相关的事情,mysql 语法是错误的。修复后我发现

 mysql -u $OPENSHIFT_MYSQL_DB_USERNAME
-h $OPENSHIFT_MYSQL_DB_HOST
-P $OPENSHIFT_MYSQL_DB_PORT
-D $OPENSHIFT_APP_NAME
-p $OPENSHIFT_MYSQL_DB_PASSWORD

结果

Enter password: 
ERROR 1045 (28000): Access denied for user 'adminjbEnwMq'@'10.63.71.68' (using password: NO)

运行时

mysql -u $OPENSHIFT_MYSQL_DB_USERNAME -h $OPENSHIFT_MYSQL_DB_HOST -P $OPENSHIFT_MYSQL_DB_PORT -D $OPENSHIFT_APP_NAME

连接成功。

更新3在 PHP 方面,我正在运行以下测试代码,感谢 this answer :

  <?php

require_once "vendor/autoload.php";
require_once "vendor/doctrine/common/lib/Doctrine/Common/ClassLoader.php";
use Doctrine\DBAL\Configuration;

$config = new \Doctrine\DBAL\Configuration();

define('DB_HOST', getenv('OPENSHIFT_MYSQL_DB_HOST'));
define('DB_PORT',getenv('OPENSHIFT_MYSQL_DB_PORT'));
define('DB_USER',getenv('OPENSHIFT_MYSQL_DB_USERNAME'));
define('DB_PASS',getenv('OPENSHIFT_MYSQL_DB_PASSWORD'));
define('DB_NAME',getenv('OPENSHIFT_GEAR_NAME'));
$connectionParams = array(
'dbname' => DB_NAME,
'user' => DB_USER,
'password' => DB_PASS,
'host' => DB_HOST,
'driver' => 'pdo_mysql',
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
var_dump($conn);
echo $conn->query("SHOW TABLES");
?>

我也遇到了同样的超时错误。

最佳答案

我无法帮助你解决你的 Doctrine 问题,但mysql命令语法实际上是错误的。

Usage: mysql [OPTIONS] [database]

正如您在输出中看到的,mysql 正在将您的密码解释为数据库名称。

如果您想指定上面所示的选项,您需要在选项和选项值之间添加“=”。

mysql --host=$OPENSHIFT_MYSQL_DB_HOST
--port=$OPENSHIFT_MYSQL_DB_PORT
--user=$OPENSHIFT_MYSQL_DB_USERNAME
--password=$OPENSHIFT_MYSQL_DB_PASSWORD

如果要将数据库名称添加到命令中,默认数据库名称为 $OPENSHIFT_APP_NAME。只需将其添加到 mysql 命令末尾即可。

要查看所有 mysql 选项,请执行 mysql --help

关于php - Openshift MySQL Cartgridge 上的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30052176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com