【问题标题】:databse not configured error while insert record in laravel在laravel中插入记录时数据库未配置错误
【发布时间】:2020-10-08 07:01:25
【问题描述】:

我在 laravel 中配置了名为 Test 的第二个数据库。但是当我用来在第二个数据库的表中插入数据时。它告诉我一个错误,数据库未配置请帮助我找出我的错误在哪里? 我已经进行了配置以在项目中添加新数据库。我更改了配置文件夹中的 .env 文件和 database.php 文件。但没有什么可以帮助我。

数据库.php


    'mysql2' => [
                'driver' => 'mysql',
                'host' => 'localhost',
                'port' => '3306',
                'database' => 'Test',
                'username' => 'root',
                'password' => '',
                'unix_socket' => '',
                'charset' => 'utf8mb4',
                'collation' => 'utf8mb4_unicode_ci',
                'prefix' => '',
                'strict' => true,
                'engine' => null,
            ],

.env


    DB_CONNECTION_SECOND=mysql2
    DB_HOST_SECOND=127.0.0.1
    DB_PORT_SECOND=3306
    DB_DATABASE_SECOND=Test
    DB_USERNAME_SECOND=root
    DB_PASSWORD_SECOND=

SellerSelectProduct.php


    <?php
    
    namespace App;
    
    use Illuminate\Database\Eloquent\Model;
    
    class SellerSelectProduct extends Model
    {
        protected $connection = 'Test';
        protected $fillable = ['product_id'];
    
        public function product(){
            return $this->belongsTo(Product::class);
        }
    }

SellerBaseController.php


    <?php
    
    namespace App\Http\Controllers;
    
    use App\Category;
    use Illuminate\Http\Request;
    use App\SellerSelectProduct;
    
    class SellerBaseController extends Controller
    {
        public function __construct()
        {
            $this->middleware('auth');
        }
    
        public function someMethod()
        {
            $someModel = new SellerSelectProduct;
            $someModel->setConnection('Test');
            $something = $someModel->find(1);
            return $something;
        }
    
    }

SellerProductController.php


    <?php
    
    
    namespace App\Http\Controllers;
    
    use App\City;
    use App\State;
    use Illuminate\Http\Request;
    use App\SellerSelectProduct;
    
    class SellerProductController extends SellerBaseController
    {
        public function someMethod()
        {
            $someModel = new SellerSelectProduct;
            $someModel->setConnection('Test');
            $something = $someModel->find(1);
            return $something;
        }
        
        public function index(State $state)
        {
            return $state->Cities;
        }
    
        public function addproducts(Request $request){
            SellerSelectProduct::insert($request->data);
            return response()->json([
                'message' => 'Selected product list updated successfully'
            ]);
        }
    }

【问题讨论】:

  • 您将连接命名为 mysql2 而不是 Test
  • 我从mysql2重命名为test,但是没有用。现在它显示基表或未找到视图错误,同时插入记录。

标签: database laravel configuration


【解决方案1】:

第二个连接的样本。

.env

DB_CONNECTION=mysql2
DB_HOST2=127.0.0.1
DB_PORT2=3306
DB_DATABASE2=
DB_USERNAME2=
DB_PASSWORD2=

database.php

'mysql2' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST2', ''),
            'port' => env('DB_PORT2', '3306'),
            'database' => env('DB_DATABASE2', 'forge'),
            'username' => env('DB_USERNAME2', 'forge'),
            'password' => env('DB_PASSWORD2', ''),
            'unix_socket' => env('DB_SOCKET2', ''),
            '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'),
            ]) : [],
        ],

使用或优化手工 php 命令对清理或缓存更改产生影响。

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2016-05-08
    • 1970-01-01
    • 2020-02-12
    相关资源
    最近更新 更多