【问题标题】:MySQL connection refused within using laravel on 000webhostMySQL 连接在 000webhost 上使用 laravel 被拒绝
【发布时间】:2017-10-13 06:07:41
【问题描述】:

我正在尝试将我的 laravel 项目部署到 000webhost。问题是我无法连接到我的数据库。

当我将我的 DB_HOST 设置为 127.0.0.1 时,我收到一个“SQLSTATE[HY000] [2002]”错误。当我将DB_HOST 更改为localhost 时,我收到一条错误消息,提示“错误的com stmt prepare response size received 7”。

这是我的 .env 文件:

APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:fuFWdq2OAIZbxiiouYdTfbPnkeEOL8h/hDJjvb7XT+c=
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=id1619178_kule
DB_USERNAME=************
DB_PASSWORD=************

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=mail
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null  
MAIL_PASSWORD=null
MAIL_ENCRYPTION=tls
MAIL_TO=

【问题讨论】:

  • 在安装 laravel 项目时,我在 000webhost 中遇到了同样的问题。 “错误的 com stmt 准备响应大小收到 7”。但我无法解决。
  • @Marino 你找到解决办法了吗?
  • 抱歉各位久等了。我搜索了 phpmyadmin 变量并找到了主机名。但现在看来 000webhost 由于某种原因已关闭,无法连接到文件管理器,所以我必须等待测试它。一旦我测试它,我会通知你。

标签: php mysql database laravel hosting


【解决方案1】:

000webhost 不执行 .env 文件中的命令,因此您必须手动指定 /config/database.php 文件中的五个变量

'mysql' => [
        'driver' => 'mysql',
        'host' => 'localhost',
        'port' => '3306',
        'database' => 'your_database_name',
        'username' => 'your_database_username',
        'password' => 'yourpassword',
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
    ],

【讨论】:

    【解决方案2】:

    如果您在 000webhost 中有免费计划,则无法进行远程连接。仅来自您的网站。

    【讨论】:

      【解决方案3】:

      给定网络主机的主机名因服务器而异!

      您可以从控制面板检索主机名并将更改添加到您的文件,否则您将获得权限被拒绝。

      【讨论】:

      • 谢谢,我会告诉你的。
      【解决方案4】:

      并非所有共享主机都在与 HTTP 服务器相同的localhost 上提供 MySQL。您应该检查您的 cpanel 以获取 MySQL 服务器的地址:

      From your hosting provider's documentation:

      什么是 MySQL 主机名?

      您已进入我们的会员区,进入控制面板并点击“MySQL”图标。您的 MySQL 主机名将在此处列出。

      重要提示!切勿在此处使用“localhost”作为您的 MySQL 主机名,否则您将收到拒绝访问错误!

      您的特定提供商明确表示您应该“永远不要使用localhost”。

      【讨论】:

      • 非常感谢您的帮助,正如我上面所说,一旦 000webhost 可以访问,我将测试主机名。
      • 这是我的主机名 - 9362.us-imm-sql2.000webhost.io 在 phpmyadmin 中的变量中说明。现在错误是 SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known 显然是错误的主机?
      • 和phpmyadmin地址无关,需要查看你的cpanel
      • 谢谢,我在 000webhost 论坛上问过,版主说 DB_HOST 是 localhost
      猜你喜欢
      • 2020-01-24
      • 2016-11-03
      • 2018-08-14
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 2021-03-16
      • 2020-01-19
      • 2017-08-08
      相关资源
      最近更新 更多