无法将 laravel 应用程序连接到远程数据库
Can't connect laravel application to distant database
这是我在 Laravel 上的第一个项目。
我获得了一个远程数据库,我尝试连接到该数据库但无法连接。
我在 phpMyAdmin 中插入了一个测试 table 并尝试获取数据。
我修改了 .env 文件以填充数据库信息。
我创建了一个 TestController :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
class Test extends Controller
{
/**
* @return Response
*/
public function index(): string
{
$tests = DB::table('test')->get();
return view('test', ['tests'=>$tests]);
}
}
然后我在 $tests 上循环并尝试显示数据但我没有结果并且出现此错误:
.env :
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:nAA971RXUyJuOcG2GzTBxKMhqfdNs7j1lGqszq9m+CI=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=https://***/
DB_PORT=3306
DB_DATABASE=***
DB_USERNAME=***
DB_PASSWORD=***
database.php :
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
我做错了什么?
你不需要在 DB_HOST 中写 HTTPS:// 只是域或 IP
这是我在 Laravel 上的第一个项目。
我获得了一个远程数据库,我尝试连接到该数据库但无法连接。
我在 phpMyAdmin 中插入了一个测试 table 并尝试获取数据。
我修改了 .env 文件以填充数据库信息。
我创建了一个 TestController :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
class Test extends Controller
{
/**
* @return Response
*/
public function index(): string
{
$tests = DB::table('test')->get();
return view('test', ['tests'=>$tests]);
}
}
然后我在 $tests 上循环并尝试显示数据但我没有结果并且出现此错误:
.env :
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:nAA971RXUyJuOcG2GzTBxKMhqfdNs7j1lGqszq9m+CI=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=https://***/
DB_PORT=3306
DB_DATABASE=***
DB_USERNAME=***
DB_PASSWORD=***
database.php :
'mysql' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL'),
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]) : [],
],
我做错了什么?
你不需要在 DB_HOST 中写 HTTPS:// 只是域或 IP