首页 > 解决方案 > 连接被拒绝 - Laravel,远程数据库

问题描述

在我的本地环境中,将数据插入我的数据库是可行的。但是在我的远程服务器上它不起作用。

我已经更改了我的远程 .env 和 database.php 文件,以便我的远程数据库和服务器可以正常工作。我可以通过 连接到数据库mysqlworkbench,没有任何问题。

但是我收到以下错误:

异常:“Illuminate\Database\QueryException”文件:“/var/www/html/go/releases/1/vendor/laravel/framework/src/Illuminate/Database/Connection.php”行:664 消息:“SQLSTATE[HY000 ] [2002] 连接被拒绝 (SQL: insert into temp_users( energy, diet, car, shortFlights, longFlights, email, country, total, updated_at, created_at) 值 (1.13, 1.7, 0.55, 0, 0, test51@mail.com, 荷兰, 5.38, 2019-09-10 15 :27:41, 2019-09-10 15:27:41))" 跟踪: [,…]

.env(用默认值替换了一些值,以保护隐私)。

APP_NAME=thename
APP_ENV=production
APP_KEY=the key
APP_DEBUG=true
APP_LOG_LEVEL=error
APP_URL=theurl

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=thedatabasename
DB_USERNAME=theusername
DB_PASSWORD=thepassword

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

database.php(重要部分)

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'thedatabasename'),
        'username' => env('DB_USERNAME', 'theusername'),
        'password' => env('DB_PASSWORD', 'thepassword'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
    ],

数据库名称正确。该表存在,所有字段也存在。提前致谢。

标签: mysqldatabaselaravel

解决方案


正如@PalakJadav 正确指出的那样,DB_HOST在您的远程 .env文件中应该更改为远程数据库服务器的远程IP 或主机名。还要与您的数据库服务提供商核实其他参数是否正确。

对文件进行更改后.env,通过安全 shell 进入远程服务器。从你的远程服务器根目录,运行php artisan命令重新加载你的 laravel 配置

 php artisan config:cache

清除旧的缓存配置

 php artisan config:clear

最后,清除您的应用程序缓存

 php artisan cache:clear

您现在可以重试 mysql 查询。

更新

还记得在您第一次将应用程序上线时迁移您的表

php artisan migrate

推荐阅读