Laravel 11 Heroku: файл базы данных по пути [/app/database/database.sqlite] не существует

Я обновил свое приложение Laravel с 10-11 с помощью Shift. Локально все выглядит нормально, когда я развертываю его в Heroku, я получаю эту ошибку: я не использую базу данных в своем приложении:

Файл базы данных по пути [/app/database/database.sqlite] не существует. Убедитесь, что это абсолютный путь к базе данных. (Соединение: sqlite, SQL: выберите * из «сессий», где «id» = I6dWWr8bFKzuCRdSvXnG7vW1H5keVr09MUW3gRht, ограничение 1)

общественный/index.php: 17

// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';
 
// Bootstrap Laravel and handle the request...
(require_once __DIR__.'/../bootstrap/app.php')
    ->handleRequest(Request::capture());

Это моя конфигурация/база данных:

<?php

return [

    'migrations' => [
        'table' => 'migrations',
        'update_date_on_publish' => false, // disable to preserve original behavior for existing applications
    ],

];

Я попытался создать этот файл в хранилище и развернуть его снова, но это не сработало.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
86
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Laravel 11 изменил драйвер сеанса по умолчанию с файла на базу данных https://github.com/laravel/laravel/blob/4ef5e2f89e987f84b33b62f79e96485dcaa8f209/.env.example#L29

Полученная вами ошибка SQL связана с этим, поскольку Laravel пытается прочитать сеанс из базы данных, но не может подключиться к базе данных.

Чтобы отменить это и использовать файловый драйвер, как в предыдущих версиях Laravel, вы можете установить драйвер сеанса в файл .env.

SESSION_DRIVER=file

В качестве альтернативы вы можете использовать драйвер сеанса базы данных, создав базу данных sqlite. Для этого вам нужно создать файл с именем database.sqlite по пути <path-to-application>/app/database/database.sqlite. Этот файл не должен быть привязан к вашей системе управления версиями (git, svn и т. д.).

Выглядит хорошо, за исключением того, что файлы .env не следует использовать с Heroku. Сохраните файл .env для локальной разработки, убедитесь, что Git игнорирует его, и вместо этого установите переменную конфигурации SESSION_DRIVER .

Chris 11.07.2024 17:14

Как и сказал Арун А.С., обновление Laravel Shift удалило config/session.php, чтобы свернуть приложение на основе структуры Laravel 11. Поэтому драйвер сеанса по умолчанию имеет значение «база данных».

Я вернул этот файл и включил:

'driver' => env('SESSION_DRIVER', 'file')

Альтернативно вы можете добавить это в переменные среды, используя настройки/параметры конфигурации Heroku.

Другие вопросы по теме