我相信我已经成功地部署了我的(非常基本的)网站到fortrabbit,但只要我连接到SSH运行一些命令(如php artisan migrate或php artisan db:seed),我得到一个错误消息:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。
我相信我已经成功地部署了我的(非常基本的)网站到fortrabbit,但只要我连接到SSH运行一些命令(如php artisan migrate或php artisan db:seed),我得到一个错误消息:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。
当前回答
来自@stuyam的回答为我解决了“没有这样的文件或目录”的问题
简单回答:将/app/config/database.php文件中的“host”从“localhost”更改为“127.0.0.1”
但随后出现了“拒绝连接”错误。如果有人有同样的问题,我的解决方案是更新app/config/local/database.php文件,使端口为8889:
'mysql' => array(
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => '8889',
'database' => 'databaseName',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
其他回答
步骤1
找到你的unix_socket的路径,只需运行netstat -ln | grep mysql
你应该得到这样的东西
unix 2 [ ACC ] STREAM LISTENING 17397 /var/run/mysqld/mysqld.sock
步骤2
将其添加到unix_socket参数中
'mysql' => array(
'driver' => 'mysql',
'host' => '67.25.71.187',
'database' => 'dbname',
'username' => 'username',
'password' => '***',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'unix_socket' => '/var/run/mysqld/mysqld.sock' <-----
),
),
希望能有所帮助!!
由于不同的原因,我遇到了[PDOException] SQLSTATE[HY000] [2002] No这样的文件或目录错误。我刚刚在Ubuntu 12.04上用Apache 2.4.7、PHP v5.5.10和MySQL 5.6.16构建了一个全新的LAMP堆栈。我把我的网站搬了回来,重新启动。但是,我无法加载我的Laravel 4.2。基于x的站点,因为上面的[PDOException]。所以,我检查了php -i | grep pdo,并注意到这一行:
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
但是,在我的/etc/my.cnf中,sock文件实际上在/var/run/mysqld/mysqld.sock中。
因此,我打开php.ini并设置pdo_mysql.default_socket的值:
pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock
然后,我重新启动apache并检查php -i | grep pdo:
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
这为我解决了问题。
我在使用docker容器运行应用程序时遇到了这个问题。
解决方案是把我正在使用的MySQL服务容器的名称放在docker_compose中。DB_HOST. yml。在我的例子中,它是db:
DB_HOST=db
希望能有所帮助。
如果你使用Laravel Homestead, 这里是设置
(包括流浪者-虚拟机)
.bash-profile
alias vm="ssh vagrant@127.0.0.1 -p 2222"
database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
终端
vm
vagrant@homestead:~/Code/projectFolder php artisan migrate:install
在Laravel 5中,数据库用户名和密码保存在项目目录中的.env文件中,例如。
DB_HOST=127.0.0.1
DB_DATABASE=db1
DB_USERNAME=user1
DB_PASSWORD=pass1
正如你所看到的,这些环境变量覆盖了这里的“forge”字符串,所以改变它们没有任何影响:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
更多信息请访问https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables