MySQL(ClearDB)在Heroku上无法使用。

4
我在Heroku上有多个(免费)应用程序,它们都使用PHP和MySQL。然而,在其中一个应用程序中,我经常遇到ClearDB(MySQL)的问题。我收到以下错误信息:
SQLSTATE [HY000] [2002]无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器
当我尝试从我的本地机器连接时,它可以正常工作。我尝试了多次删除ClearDB插件并再次添加,但这并没有解决问题。这种情况已经持续了大约3周。
以下是我的代码:
    public $production = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'us-cdbr-east-04.cleardb.com',
    'login' => 'username',
    'password' => 'password',
    'database' => 'heroku_9565d18e1870f97',
    'prefix' => '',
    //'encoding' => 'utf8',
);

这是我从Heroku/ClearDB获得的URL

mysql://username:password@us-cdbr-east-04.cleardb.com/heroku_9565d18e1870f97?reconnect=true

有什么想法现在该怎么办?我的代码看起来是否正确?我可以向Heroku的支持部门求助,但由于目前没有支付Heroku费用,我宁愿先向社区寻求帮助。

使用MySQL Workbench连接ClearDB时遇到了相同的问题。 - Rails beginner
如果您确定您正在正确使用凭据,请尝试删除ClearDb插件并重新添加它。这就是最终解决我的方法。我已经做了大约50次,最后它起作用了。 - Teodor Talov
2个回答

2

看起来你的连接字符串可能缺失或错误。

ClearDB插件设置了一个名为CLEARDB_DATABASE_URL的环境变量。当你尝试连接时,它包含了你需要使用的mysql连接字符串。


该错误提示mysql正在尝试通过Unix套接字连接而不是通过TCP连接,您可以尝试获取一些调试输出以确保CLEARDB_DATABASE_URL的值已设置。 - Chris Cherry
CLEARDB_DATABASE_URL值已设置。不确定我还能获得哪些其他调试输出? - Teodor Talov
你能否发布一下你正在使用的连接代码部分? - Chris Cherry
我看到你把参数设置成$production,它是否设置/检测正确的环境?它必须以某种方式设置$default。(根据你的代码,我假设你在使用CakePHP)。 - Chris Cherry
啊,我没意识到你的意思是它在短时间内能够工作,然后自己崩溃了,我以为你的意思是它根本不工作。如果它能够工作,但是在你没有改变任何代码的情况下就崩溃了,那么原因很可能不在你手中,在这一点上,你有充分的理由联系Heroku/ClearDB支持团队。 - Chris Cherry
显示剩余3条评论

0

从ClearDB Heroku插件切换到JawsDB MySQL Heroku插件解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接