我相信我已经成功地部署了我的(非常基本的)网站到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
在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。
当前回答
我在Elixir/Gulp和Homestead中运行PHPUnit时遇到了这个问题。
在我的例子中,我将.env文件从DB_HOST=localhost编辑为DB_HOST=192.168.10.10,其中192.168.10.10是我的Vagrant/Homestead主机的IP。
其他回答
在我的情况下,我没有任何问题,只是忘记启动mysql服务…
sudo service mysqld start
由于不同的原因,我遇到了[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-compose up启动一个docker项目时遇到了这个错误。
对于我的特定情况,问题是我从子文件夹运行docker-compose,而不是从docker-compose文件所在的根文件夹运行。
确保从docker-compose所在的文件夹中运行docker-compose。Yml保存到!
要添加到@alexventuraio的解决方案中,如果你在Laravel 5.8上遇到了这个问题,你可能想要替换数据库配置文件中'unix_socket'的值,如下:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
// 'unix_socket' =>'/var/run/mysqld/mysqld.sock',
'unix_socket' => env('DB_SOCKET', ''), // replace with this line, so you can always add the mysqld.sock from the dotenv file
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => false,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
如果你使用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