我有一個Laravel 8專案。Laravel 在 a 上運行sqlite,我想將舊mariaDBWordpress 資料庫中的資料匯入 sqlite。舊的 wordpress 資料庫在docker 容器中運行。我還可以使用 MySQL Workbench 訪問資料庫。
但不幸的是,我無法創建與 Docker 資料庫的連接。我得到以下資訊Illuminate\Database\QueryException:
SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name or service not known (SQL: select * from
wp_postswherepost_type= news)
為什么我在這里想念什么?
這是我的相關設定:
docker-compose.yml
docker-compose.yml
version: "3.7"
services:
# ...
#Mysl Service
mysql:
image: mariadb:10.5
container_name: laravel-mysql
volumes:
- db_data:/var/lib/mysql
- ./logs/mysql:/var/log/mysql
- ./dumps/:/home/dumps
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_DATABASE=laravel
- MYSQL_USER=laravel
- MYSQL_PASSWORD=password
ports:
- 3307:3306
networks:
- mynetwork
# ...
volumes:
db_data:
.env
DB_CONNECTION=sqlite
DB_CONNECTION_WP=mysql
DB_HOST_WP=mysql
DB_PORT_WP=3306
DB_DATABASE_WP="wordpress"
DB_USERNAME_WP=root
DB_PASSWORD_WP=password
資料庫.php
'mysql_wp' => [
'driver' => 'mysql',
'url' => env('DATABASE_URL_WP'),
'host' => env('DB_HOST_WP', '127.0.0.1'),
'port' => env('DB_PORT_WP', '3307'),
'database' => env('DB_DATABASE_WP', 'wordpress'),
'username' => env('DB_USERNAME_WP', 'root'),
'password' => env('DB_PASSWORD_WP', 'password'),
'unix_socket' => env('DB_SOCKET_WP', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
服務/進口/ wpNewsImport.php
$data = DB::connection('mysql_wp')
->table('wp_posts')
->where("post_type", "news")
->get();
提前致謝,順便說一句。新年快樂!
uj5u.com熱心網友回復:
看起來您的 DB_HOST_WP=mysql 設定是錯誤的。應該有一個有效的資料庫主機地址或 IP。如果您可以使用 MySQL Workbench 訪問資料庫,那么只需從中復制主機設定即可。
uj5u.com熱心網友回復:
我找到了問題所在。我太愚蠢了。您必須在應用程式容器內進行資料庫互動。因為app容器和資料庫容器在同一個docker網路。而我在外面。即所有設定都正確。我只需要通過 bash 登錄到資料庫容器。
docker exec -it laravel-app bash
然后它起作用了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403669.html
標籤:
上一篇:Laravel控制器中的表連接
