Laravel с использованием нескольких баз данных (2 MySQL, 1 SQLite) - PullRequest
0 голосов
/ 21 апреля 2020

Я разрабатываю проект, в котором мне нужно использовать несколько баз данных в Laravel. Первая база данных работает как шарм (MySQL), но я не могу заставить фреймворк распознавать БД SQLite. Появляющаяся ошибка:

Подсветка \ База данных \ QueryException База данных (sqlite) не существует. (SQL: PRAGMA foreign_keys = ON;)

Вот мой .env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=sitio1
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION_SECOND=sqlite
DB_DATABASE_SECOND=/Users/imac/CleverOctopusBDD/database/Sitio2.sqlite
DB_USERNAME_SECOND=root
DB_PASSWORD_SECOND=

и вот моя база данных. php

'default' => env('DB_CONNECTION', 'mysql'),

'connections' => [

    'sqlite' => [
        'driver' => 'sqlite',
        'url' => env('DATABASE_URL'),
        'database' => env('DB_CONNECTION_SECOND', database_path('Sitio2.sqlite')),
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'sitiocentral'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        ]) : [],
    ],

И мой файл .sqlite находится по следующему адресу: -> database -> Sitio2.sqlite

Я провел небольшое исследование и не знаю, что я делаю неправильно. Если вам интересно, вот как выглядит одна из моих моделей sqlite db ...

class Client2 extends Model
{
    protected $connection = 'sqlite';

    protected $fillable = [
        'name', 'email', 'phone', 'address'
    ];

    protected $table = 'Client2';
    protected $primaryKey = 'idClient';
    public $timestamps = false;
}

Надеюсь, вы мне поможете, потому что я нашел информацию о нескольких MySQL соединениях, но не с SQLite Я ценю любые советы.

РЕДАКТИРОВАТЬ: Мне просто нужно было передать полный путь к 'database' => env ('DB_DATABASE_SECOND', database_path ('Sitio2.sqlite')),

1 Ответ

0 голосов
/ 21 апреля 2020

это работает, если вы указали полный путь к файлу sqlite в конфигурации базы данных, как это?

'sqlite' => [
        'driver' => 'sqlite',
        'url' => env('DATABASE_URL'),
        'database' => '/Users/imac/CleverOctopusBDD/database/Sitio2.sqlite',
        'prefix' => '',
        'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
    ],
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...