Laravel migrate schema使用不同的库连接不生效, 模型还是读取的原来的配置。

laravel 使用不同的前缀连接模型。

数据库配置 config/database.php

 ...
 'connections' => [
        'mysql' => [
            'driver'         => 'mysql',
            'url'            => env('DATABASE_URL'),
            'host'           => env('DB_HOST', 'mysql'),
            'port'           => env('DB_PORT', '3306'),
            'database'       => env('DB_DATABASE', 'default'),
            'username'       => env('DB_USERNAME', 'root'),
            'password'       => env('DB_PASSWORD', 'xxx'),
            'unix_socket'    => env('DB_SOCKET', ''),
            'charset'        => 'utf8mb4',
            'collation'      => 'utf8mb4_unicode_ci',
            'prefix'         => env('DB_PREFIX', 'zbc_'),
            'prefix_indexes' => true,
            'strict'         => false,
            'engine'         => null,
            'options'        => extension_loaded('pdo_mysql') ? array_filter(
                [
                    PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
                ]
            ) : [],
        ],

        'mysql2' => [
            'driver'         => 'mysql',
            'url'            => env('DATABASE_URL'),
            'host'           => env('DB_HOST', 'mysql'),
            'port'           => env('DB_PORT', '3306'),
            'database'       => env('DB_DATABASE', 'default'),
            'username'       => env('DB_USERNAME', 'root'),
            'password'       => env('DB_PASSWORD', 'xxxxxx'),
            'unix_socket'    => env('DB_SOCKET', ''),
            'charset'        => 'utf8mb4',
            'collation'      => 'utf8mb4_unicode_ci',
            'strict'         => false,
            'engine'         => null,
        ],
    ]...

编写migrate 文件时添加connection 指定数据库配置连接。 database/migrations/2021_03_11_170106_test.php

       Schema::connection('mysql2')->table(
           'system_setting',
           function (Blueprint $table) {
                 $table->string('test', 300)->comment('测试')->nullable();
           }
       );

执行后如果发现读取不对,还是读的之前的mysql连接

  • 原因:config 缓存了之前的mysql配置
  • 解决:执行artisan 命令清除config配置缓存。
    php artisan config:clear
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!