Я хочу подключиться к внешней БД - PullRequest
2 голосов
/ 11 октября 2019

Я хочу подключиться к SQLserver, который я хочу использовать для справки отдельно от MYSQL, который является основной БД
. Для этого установите

.env

#mysql
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=hogedb
DB_USERNAME=hoge
DB_PASSWORD=password

#SQLserver
DB_CONNECTION=sqlsrv
DB_HOST=localhost
DB_DATABASE=databasename
DB_USERNAME=username
DB_PASSWORD=password

пользователь

protected $connection = 'sqlsrv';

Я получил ошибку

не удалось найти драйвер (SQL: выберите * из [пользователь], где [пользователь][удаленный_кат] является нулевым)

Ответы [ 2 ]

5 голосов
/ 11 октября 2019

.env :

#mysql
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=hogedb
DB_USERNAME=hoge
DB_PASSWORD=password

#SQLserver
DB_SQL_HOST=localhost
DB_SQL_DATABASE=databasename
DB_SQL_USERNAME=username
DB_SQL_PASSWORD=password

И config/database.php:

 'connections' => [
    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],
    'sqlsrv' => [
        'driver'   => 'sqlsrv',
        'host'     => env('DB_SQL_HOST', 'localhost'),
        'database' => env('DB_SQL_DATABASE', ''),
        'username' => env('DB_SQL_USERNAME', ''),
        'password' => env('DB_SQL_PASSWORD', ''),
        'prefix'   => '',
    ],
],

Затем использовать в user - protected $connection = "sqlsrv";
Наконец-то запустите php artisan config:cache.

1 голос
/ 11 октября 2019

Вы настроили config/database.php файл?

Попробуйте настроить его следующим образом

'mysql' => [
        'driver'        => 'mysql',
        'host'          => env('DB_HOST', '127.0.0.1'),
        'port'          => env('DB_PORT', '3306'),
        'database'      => env('DB_DATABASE', 'database_1'), //forge
        'username'      => env('DB_USERNAME', 'root'), // forge
        'password'      => env('DB_PASSWORD', ''),
         .......
    ],

    'sqlsrv' => [
        'driver'        => 'sqlsrv',
        'host'          => env('DB_HOST_SQLSRV', '127.0.0.1'), // Notice that we change the default so that it'll refer to another variable which will be DB_HOST_SQLSRV in the .env file
        'port'          => env('DB_PORT_SQLSRV', '1433'),
        'database'      => env('DB_DATABASE2_SQLSRV', 'database_2'),
        'username'      => env('DB_USERNAME', 'root'), // Remains as is if you won't change the username and password, change it if you need to
        'password'      => env('DB_PASSWORD', ''),
        .......
   ],

В вашем файле .env он должен выглядеть следующим образом

// Mysql
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=hogedb
DB_USERNAME=hoge
DB_PASSWORD=password

// SQL Server
DB_CONNECTION=sqlsrv // We call in the 'sqlsrv' that we configured in database.php
DB_HOST_SQLSRV=localhost
DB_PORT_SQLSRV=1433 // DON'T FORGET THIS, IT'S VERY IMPORTANT!
DB_DATABASE2_SQLSRV=databasename // We change 'DB_Database' to 'DB_Database2'
DB_USERNAME=root // We may not add this to the second one unless you configured for another username & password in database.php
DB_PASSWORD=

Так что в основном то, что вы настроили в файле database.php, будет извлекать данные из вашего .env, если вы заметите, что в нем есть слово env env('DB_PORT_SQLSRV', '1433')

Незабудьте запустить php artisan config:cache после изменения чего-либо в папке конфигурации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...