php 运行迁移时,“无此类文件或目录”或“未知无此类主机”

jum4pzuy  于 5个月前  发布在  PHP
关注(0)|答案(9)|浏览(50)

我从Laravel 5.4数据库laravel中删除了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')

的数据

vs91vp4v

vs91vp4v1#

如果您使用localhost作为.env文件中的DATABASE_HOST,请将其更改为127.0.0.1,然后运行php artisan config:clear,然后再次尝试php artisan migrate:install

dgsult0t

dgsult0t2#

以下是我对.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

ikfrs5lh

ikfrs5lh3#

我通过在.env文件中设置环境变量来修复此问题:

DB_CONNECTION=mysql 
DB_HOST=mysql 
DB_PORT=3306

字符串
实际上,我只是从DB_HOST=127.0.0.1改为DB_HOST=mysql

s1ag04yj

s1ag04yj4#

如果您使用的是MAMP Pro(对于免费版的MAMP并不总是必需的),那么最好的做法是将此添加到.env文件中:

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

字符串
当然,这假设您的MAMP安装在/Applications/MAMP(默认值)。

  • 图片来源:@Uncoke在这个问题上的评论 *
z18hc3ub

z18hc3ub5#

对于Mac用户,将此添加到您的.env文件中

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

字符串

vxbzzdmp

vxbzzdmp6#

我在macOS上使用MAMP,在将localhost编辑为127.0.0.1并将端口编辑为8888后,通过添加以下内容修复了此问题
'unix_socket' => env('DB_SOCKET','/Applications/MAMP/tmp/mysql/mysql. sock'),
config/database.php文件

plupiseo

plupiseo7#

在某些情况下,这可能会发生,因为mysql服务器没有运行。它发生在我使用Laravel 5.7和重新启动mysql服务器解决了它。对于ubuntu检查mysql服务器service mysql status的状态。您可以使用命令service mysql restart重新启动mysql服务器

zzwlnbp8

zzwlnbp88#

对自己的问题提出一个解决方案:
我删除了文件夹并重新创建了代码库,确保将环境指向正确的数据库服务器。这次成功了。我不知道到底是什么原因导致了最初的错误。

hsvhsicv

hsvhsicv9#

检查.env和database.php中的名称是否匹配:

DB_DATABASE
DB_USERNAME
DB_PASSWORD

字符串
也改变:

'unix_socket' => env('DB_HOST', ''),


收件人:

'unix_socket' => env('DB_SOCKET', ''),

相关问题