【问题标题】:"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')

【问题讨论】:

标签: php mysql laravel laravel-artisan


【解决方案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

          【讨论】:

            猜你喜欢
            • 2019-03-16
            • 2016-08-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-22
            • 2019-05-30
            相关资源
            最近更新 更多