我有一個未經修改的新 Laravel 專案,我正在嘗試讓我的第一個模型啟動并運行。我曾經使用./vendor/bin/sail up默認設定運行網路服務器和 MySQL。我可以從 DBeaver 訪問資料庫,遷移運行良好,我什至可以使用 tinker 從終端訪問我的資料庫資料:
$ php artisan tinker
Psy Shell v0.10.12 (PHP 7.4.3 — cli) by Justin Hileman
>>> use App\Models\User;
>>> User::all()
=> Illuminate\Database\Eloquent\Collection {#4290
all: [
App\Models\User {#4292
id: 1,
name: "Johannes Molenaar",
email: "[email protected]",
email_verified_at: "2022-01-10 13:51:35",
#password: "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi",
#remember_token: "bhuBvEAZ9c",
created_at: "2022-01-10 13:51:35",
updated_at: "2022-01-10 13:51:35",
},
],
}
現在,當我嘗試在我的routes/web.php檔案(或與此相關的控制器)中執行任何此操作時,它不起作用:
Route::get('/', function() {
App\Models\User::all();
});
我得到的錯誤是:
照亮\資料庫\查詢例外
SQLSTATE[HY000] [2002] 連接被拒絕 (SQL: select * from `users`)
我使用什么模型或 ORM 函式并不重要,它們都會給我同樣的錯誤。我檢查了我的.env配置,但我認為該配置中的錯誤也意味著工匠將無法訪問資料庫。
.env 檔案:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tgi_laravel
DB_USERNAME=sail
DB_PASSWORD=password
配置/資料庫.php:
'connections' => [
'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'),
]) : [],
],
// sqlite, pgsql and sqlsrv here
],
有沒有人知道這里會出什么問題?讓我知道是否有任何其他資訊需要評估此問題。
編輯:
我在 web 專案中使用 php 8.1.1,但 Tinker 似乎在 7.4.3 上運行。將服務器的 php 版本更改為 7.4.27 并不能解決此問題(將 docker 映像更改為sail-7.4/app)。
清除配置快取不起作用 ( php artisan config:clear)。
更改DB_HOST為localhost(而不是127.0.0.1)會將錯誤更改為“沒有此類檔案或目錄”。
uj5u.com熱心網友回復:
所以也許在組態檔上使用 localhost 而不是 127.0.0.1
uj5u.com熱心網友回復:
'localhost' 和 '127.0.0.1' 之間出現不同錯誤的事實表明 127.0.0.1 是正確的連接字串;它找不到本地主機,但 127.0.0.1 不依賴于任何查找。
我的猜測可能是用戶 'sail' 在資料庫中沒有適當的權限來訪問該表。我會進入 MySQL / Maria,并在 forge 上授予所有權限。* TO 'sail'@'localhost' 然后再試一次。
此外,我對sail 不是很熟悉,但快速瀏覽一下就表明除了“sail up”之外,您可能還必須指定DB,即DB_DATABASE=forge。
查看您的組態檔,用戶的密碼為空。我假設您只是對其進行了編輯,但請確保您的開發實體上的組態檔是正確的!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407529.html
標籤:
上一篇:是否可以快取Mysql視圖?
