SQLSTATE[HY000] [2002] 在 Elastic Beanstalk / Laravel 上执行命令时没有这样的文件或目录
Posted
技术标签:
【中文标题】SQLSTATE[HY000] [2002] 在 Elastic Beanstalk / Laravel 上执行命令时没有这样的文件或目录【英文标题】:SQLSTATE[HY000] [2002] No such file or directory when executing a command on Elastic Beanstalk / Laravel 【发布时间】:2016-08-29 02:12:16 【问题描述】:我在 Laravel 5.1 / AWS Elastic Beanstalk 中有一个生产应用程序。
由于我有多个环境,并且自动部署,我不使用.env,但我定义了我的环境变量directly on server:
当代码部署到 Elastic beanstalk 时,由于环境变量未解析,我无法执行 no 命令。
所以,当我执行时:
php artisan migrate
我明白了:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
在这个post 中,用户遇到了与我完全相同的问题,但他解决了这个问题,创建了一个包含所有环境变量的 .environment。我不是很喜欢。
然后,如果我把它放在 .gitignore 中,持续部署将永远不会部署它。
我不知道该怎么做,也不想在我的 git 中包含我的数据库连接设置...
【问题讨论】:
【参考方案1】:我遇到了这个问题,并通过将端口添加到 Elastic Beanstalk 中的 DB_HOST
环境变量的末尾来解决它。如果有人遇到此问题并且不使用 EB 环境变量,请尝试将端口添加到 .env。
【讨论】:
【参考方案2】:出现此消息的原因是因为 PHP 正在寻找 mysql 套接字文件,而 MySQL 未安装在服务器上,您需要使用 RDS 或托管在 EC2 或其他地方的 MySQL 实例。
要配置您的数据库,您可以使用 AWS EB 命令行工具,如下所述:
http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-setenv.html
例如eb setenv DATABASE=laravel PASSWORD=123
或者您可以使用 Web 控制台对其进行配置:
http://docs.aws.amazon.com/gettingstarted/latest/deploy/envvar.html
保存这些将导致应用程序更新,因此请同时更新所有这些,因为在部署更改时您将无法编辑任何内容。
其他选项包括:
在源代码管理中存储凭据
将它们存储在 Elastic Beanstalk 接口中,该接口将它们推送到环境变量中
将它们存储在 S3 上的一个文件中,您将其锁定为只能由您的 Elastic Beanstalk 实例访问,将一些内容添加到您的 .ebextensions 配置文件中
如果您能阐明其中任何一个不正确的原因,可能有助于找到正确的解决方案。
【讨论】:
我正在使用 RDS。最好问我而不是猜测 我不是说你没有使用过 RDS,我说你需要使用 RDS 或单独的 EC2 实例,因为这是为了帮助拥有相同实例的人的答案未来的问题。这是否如此无益以至于值得一票否决?它不是提供了一种将您的配置与源代码分开的方法吗? Thomas,我很感激任何试图帮助我的人,但我很确定你的回答不会解决我的问题,也不会帮助我。否决票是邀请您删除您的答案并取回您的积分。这就是***的工作方式。它可以保持问题和答案的质量。 如果您不想使用 Elastic Beanstalk 提供的机制,您究竟在寻找什么?尽管您称我的回答质量低下,但您仍然没有以任何方式澄清您确实想要什么。 我已经使用了 elastic beanstalk 环境变量,这是主要问题,请参考我的问题。顺便说一句,我不是故意要伤害你,我只是觉得你没有打开我提供的链接以上是关于SQLSTATE[HY000] [2002] 在 Elastic Beanstalk / Laravel 上执行命令时没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
gcloud app SQLSTATE[HY000] [2002] 连接超时
Laravel:SQLSTATE [HY000] [2002] 连接被拒绝
Symfony 2 SQLSTATE [HY000] [2002] 连接被拒绝错误
Laravel 7 SQLSTATE [HY000] [2002] 连接被拒绝
PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]