在 laravel 应用程序中添加读写数据库时的 Gitlab 问题
Gitlab issue when add read and write database in laravel application
我在当前laravel应用中添加一个读写数据库连接,像这样:
'mysql' => [
'read' => [
'host' => [
env('DB_HOST_READONLY', '127.0.0.1'),
],
],
'write' => [
'host' => [
env('DB_HOST', '127.0.0.1'),
],
],
'sticky' => true,
'driver' => 'mysql',
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
因为我在 Gitlab 上设置了 CI/CD,所以我得到了这个错误:
cp .env.example .env
php artisan migrate:refresh --seed
In Connection.php line 692:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = oauth_test and table_name = migrations and table_type = 'BASE TABLE')
In Connector.php line 70:
SQLSTATE[HY000] [2002] Connection refused
我在.env.example文件里也加了DB_HOST_READONLY参数也是127.0.0.1,和DB_HOST参数一样。没有这个改变,我在 .env.example:
中有这个
DB_HOST=127.0.0.1
并在 database.php 文件中:
'host' => env('DB_HOST', '127.0.0.1'),
所有人都被唤醒了。
Gitlab上CI/CD中的变量是:
variables:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: oauth_test
DB_HOST: mysql
你能帮助我或有什么想法吗?
随时询问您是否需要更多东西。
您的 CI 环境中 127.0.0.1
上没有数据库 运行,因此无法 运行 迁移。
正如 AlexD 所解释的,您的 Gitlab 机器在 CI env 上运行,这是另一个用于构建和打包您的应用程序的服务器
为了你 tests/access 要在你 CI build 上建立数据库,你必须提供 URL 或 ip 托管数据库的机器的 可以注入你的 gitlab ci 的环境变量,而无需在你的 .env 文件中进行硬编码。
我发现它是如何工作的,也许有人会使用这些信息并帮助他:
进入 .env.testing 需要更改:
DB_HOST=127.0.0.1
DB_HOST_READONLY=127.0.0.1
进入:
DB_HOST=mariadb
DB_HOST_READONLY=mariadb
并进入 gitlab-ci.yml 文件:
variables:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
DB_HOST: mysql
进入这个:
variables:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
DB_HOST: mariadb
我在当前laravel应用中添加一个读写数据库连接,像这样:
'mysql' => [
'read' => [
'host' => [
env('DB_HOST_READONLY', '127.0.0.1'),
],
],
'write' => [
'host' => [
env('DB_HOST', '127.0.0.1'),
],
],
'sticky' => true,
'driver' => 'mysql',
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
...
因为我在 Gitlab 上设置了 CI/CD,所以我得到了这个错误:
cp .env.example .env
php artisan migrate:refresh --seed
In Connection.php line 692:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = oauth_test and table_name = migrations and table_type = 'BASE TABLE')
In Connector.php line 70:
SQLSTATE[HY000] [2002] Connection refused
我在.env.example文件里也加了DB_HOST_READONLY参数也是127.0.0.1,和DB_HOST参数一样。没有这个改变,我在 .env.example:
中有这个DB_HOST=127.0.0.1
并在 database.php 文件中:
'host' => env('DB_HOST', '127.0.0.1'),
所有人都被唤醒了。 Gitlab上CI/CD中的变量是:
variables:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: oauth_test
DB_HOST: mysql
你能帮助我或有什么想法吗? 随时询问您是否需要更多东西。
您的 CI 环境中 127.0.0.1
上没有数据库 运行,因此无法 运行 迁移。
正如 AlexD 所解释的,您的 Gitlab 机器在 CI env 上运行,这是另一个用于构建和打包您的应用程序的服务器
为了你 tests/access 要在你 CI build 上建立数据库,你必须提供 URL 或 ip 托管数据库的机器的 可以注入你的 gitlab ci 的环境变量,而无需在你的 .env 文件中进行硬编码。
我发现它是如何工作的,也许有人会使用这些信息并帮助他: 进入 .env.testing 需要更改:
DB_HOST=127.0.0.1
DB_HOST_READONLY=127.0.0.1
进入:
DB_HOST=mariadb
DB_HOST_READONLY=mariadb
并进入 gitlab-ci.yml 文件:
variables:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
DB_HOST: mysql
进入这个:
variables:
MYSQL_USER: root
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
DB_HOST: mariadb