Я обновил свое приложение 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
],
];
Я попытался создать этот файл в хранилище и развернуть его снова, но это не сработало.
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 и т. д.).
Как и сказал Арун А.С., обновление Laravel Shift удалило config/session.php, чтобы свернуть приложение на основе структуры Laravel 11. Поэтому драйвер сеанса по умолчанию имеет значение «база данных».
Я вернул этот файл и включил:
'driver' => env('SESSION_DRIVER', 'file')
Альтернативно вы можете добавить это в переменные среды, используя настройки/параметры конфигурации Heroku.
Выглядит хорошо, за исключением того, что файлы
.env
не следует использовать с Heroku. Сохраните файл.env
для локальной разработки, убедитесь, что Git игнорирует его, и вместо этого установите переменную конфигурацииSESSION_DRIVER
.