我相信我已经成功地部署了我的(非常基本的)网站到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
在某种程度上,迁移一定是有效的,因为我的表在那里——但这并不能解释为什么它现在不适合我。
当前回答
这是因为PDO特别对待“localhost”主机:
注意:仅适用于Unix:当主机名设置为"localhost"时,则 到服务器的连接是通过域套接字进行的。如果PDO_MYSQL是 根据libmysqlclient编译后的套接字文件的位置 在libmysqlclient的编译位置。如果编译PDO_MYSQL mysqlnd的默认套接字可以通过 pdo_mysql.default_socket设置。
(来自http://php.net/manual/en/ref.pdo-mysql.connection.php)
将localhost更改为127.0.0.1将“强制”使用TCP。
注意:mysqli_connect与localhost一起工作很好。
其他回答
仔细检查端口。在我的情况下,它是8889,我正在使用8888。 将“DB_HOST”从“localhost”改为“127.0.0.1”,反之亦然
我在访问Drupal网站时也遇到了类似的问题。我通过打开命令行,重新启动我的MySQL服务器或服务来修复它:
service mysqld restart
这应该有用。如果没有,重启你的本地web服务器:
service httpd restart
这应该足够了。希望它也适用于其他环境。注意,这些命令通常需要超级用户权限。
在我的例子中,我在我的mac终端上运行php artisan migrate,当我需要ssh进入vagrant并从那里运行它时。希望这能帮助缓解头痛。
错误消息表明尝试通过套接字进行MySQL连接(不支持)。
在Laravel (artisan)环境中,您可能需要使用不同/正确的环境。例如:php artisan migrate——env=生产(或任何环境)。在这里看到的。
如果你使用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