运行迁移时“没有这样的文件或目录”或“不知道这样的主机”
Posted
技术标签:
【中文标题】运行迁移时“没有这样的文件或目录”或“不知道这样的主机”【英文标题】:"No such file or directory" or "No such host is known" when running migrations 【发布时间】:2018-03-06 13:23:27 【问题描述】:我从名为 laravel
的 Laravel 5.4 数据库中删除了 migrations
表。当我运行php artisan migrate:install
时,我收到此错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] No such file or directory
(SQL: select * from information_schema.tables where table_schema = laravel
and table_name = migrations)
我删除并重新创建了数据库。我还跑了composer update
。没有运气。我可以在 phpMyAdmin 中运行命令并手动创建表。
这个问题有时也会出现类似的 2002 错误:
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known.
(SQL: select * from information_schema.tables where table_schema = laravel
and table_name = migrations and table_type = 'BASE TABLE')
[Illuminate\Database\QueryException]
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known
(SQL: select * from information_schema.tables where table_schema = laravel
and table_name = migrations and table_type = 'BASE TABLE')
【问题讨论】:
这行得通。 ***.com/questions/29305502/… 这能回答你的问题吗? PDOException: SQLSTATE[HY000] [2002] No such file or directory 【参考方案1】:如果您在.env
文件中使用localhost
作为DATABASE_HOST
,请将其更改为127.0.0.1
,然后运行php artisan config:clear
,现在再次尝试php artisan migrate:install
。
【讨论】:
为什么localhost
在 SequelAce 中有效,而在 .env
中无效?【参考方案2】:
针对我自己的问题发布解决方案:
我删除了文件夹并重新创建了代码库,确保将我的环境指向正确的数据库服务器。这次奏效了。我不确切知道导致原始错误的原因是什么。
【讨论】:
【参考方案3】:这是我对.env
文件的推荐:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
然后在Database.php
添加文件夹位置:
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
最后,试试:
php artisan config:clear
php artisan migrate:install
【讨论】:
谢谢!你是救生员)【参考方案4】:在某些情况下,这可能是因为 mysql 服务器没有运行。它发生在我使用 Laravel 5.7 并重新启动 mysql 服务器解决了它。对于 ubuntu,检查 mysql 服务器service mysql status
的状态。你可以使用命令service mysql restart
重启mysql服务器
【讨论】:
【参考方案5】:我在 macOS 上使用 MAMP,在将 localhost 编辑为 127.0.0.1 并将端口编辑为 8888 后,通过添加以下内容解决了这个问题
'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
到 config/database.php 文件。
【讨论】:
【参考方案6】:如果您使用的是 MAMP Pro(MAMP 的免费版本并不总是必需的),那么最好将其添加到您的 .env
文件中:
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
这假设您的 MAMP 安装在 /Applications/MAMP
当然(默认)。
致谢:@Uncoke 对这个问题的评论
【讨论】:
【参考方案7】:我通过在.env
文件中设置环境变量解决了这个问题:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
其实我只是从DB_HOST=127.0.0.1
改成了DB_HOST=mysql
。
【讨论】:
以上是关于运行迁移时“没有这样的文件或目录”或“不知道这样的主机”的主要内容,如果未能解决你的问题,请参考以下文章
导入失败:java.io.IOException:无法运行程序“hive”:错误=2,没有这样的文件或目录
php artisan migrate 没有这样的文件或目录
Symfony3.4 / Doctrine迁移 - 驱动程序中发生异常:SQLSTATE [HY000] [2002]没有这样的文件或目录