Как заставить SQLite работать в Laravel
Всякий раз, когда я бегуphp artisan migrate
в консоли отображается следующая ошибка:
[PDOException]
SQLSTATE [HY000] [14] не может открыть файл базы данных
database.sqlite файл находится вбаза данных/, я бегуWindows 10, Ларавел 5.2, Вот.env Конфигурация файла:
DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=homestead
DB_PASSWORD=secret
Я посмотрел везде, но не смог найти, что вызывает эту ошибку и как ее устранить.
ОбновитьМне удалось успешно запустить миграцию, заменивDB_DATABASE=database
сDB_DATABASE=database/database.sqlite
в.env файл. Тем не менее, новая ошибка возникает всякий раз, когда я пытаюсь получить элементы из базы данных:
public function index()
{
// cause of the error
$cards = Card::all();
return view('cards.index', compact('cards'));
}
Вышеуказанное действие выдает следующую ошибку:
InvalidArgumentException в строке SQLiteConnector.php 34:
База данных (database / database.sqlite) не существует.
Странно то, что командаCard::all()
работает без нареканий вphp artisan tinker
Режим. Что это за магия?
Во всяком случае, я также узнал, что строка:
'database' => env('DB_DATABASE', database_path('database.sqlite')),
вdatabase.php файл должен быть заменен простоdatabase_path('database.sqlite')
а такжевсе начинает работать нормально.
Кажется, что корень проблемыenv('DB_DATABASE')
вызов. я пошел вSQLiteConnector.php файл и сбросили вывод обоихenv('DB_DATABASE')
а такжеdatabase_path('database.sqlite')
, Вот их выводы соответственно:
dd(env('DB_DATABASE')) // => 'database/database.sqlite'
dd(database_path('database.sqlite')) // => 'D:\www\project\database\database.sqlite'
Как видите, их вывод отличается, а второй - это то, что ожидается. Это ошибка Laravel? Или я что-то не так понял?