База данных разработки laravel отсутствует. База данных sqlite не существует.

Попытка использовать sqlite в среде разработки. Кажется, что он правильно определяет среду, но когда я пытаюсь перейти на development.sqlite, я получаю исключение: "База данных не существует"

команда artisan

php artisan migrate --env=development

самозагрузки/start.php

$env = $app->detectEnvironment(array(

    'development' => array('localhost'),

));

приложение/Config/разработка/database.php

<?php

return array(
    'default' => 'sqlite',

    'connections' => array(
            'sqlite' => array(
            'driver'   => 'sqlite',
            'database' => __DIR__.'/../database/development.sqlite',
            'prefix'   => '',
        )
    )
);

Насколько я знаю, laravel должен создать файл, если он не существует, но поскольку я не пытался вручную создать файл и все еще получаю исключение.

UPDATE: Может быть, что-то не так с env, потому что то же самое происходит, если я пытаюсь ": memory" для базы данных.

ОБНОВЛЕНИЕ 2: Я попытался запустить образец unit test, но добавлю к TestCase.php

     /**
     * Default preparation for each test
     *
     */
    public function setUp()
    {
        parent::setUp(); // Don't forget this!

        $this->prepareForTests();
    }

    /**
     * Creates the application.
     *
     * @return Symfony\Component\HttpKernel\HttpKernelInterface
     */
    public function createApplication()
    {
        $unitTesting = true;

        $testEnvironment = 'testing';

        return require __DIR__.'/../../bootstrap/start.php';
    }

    /**
     * Migrates the database and set the mailer to 'pretend'.
     * This will cause the tests to run quickly.
     *
     */
    private function prepareForTests()
    {
        Artisan::call('migrate');
        Mail::pretend(true);
    }

И это тоже дает то же самое исключение, хотя тестирование env уже отправлено с laravel. Поэтому я посмотрю, смогу ли я найти какие-либо новые проблемы.

Ответ 1

Ничего себе, опечатки и неправильные пути.

Копирование массива sqlite из config/database.php в config/development/database.php Я забыл изменить путь к файлу development.sqlite из

__DIR__.'/../database/development.sqlite'

к

__DIR__.'/../../database/development.sqlite'

И для теста in memory это должно было быть

':memory:'

вместо

':memory'

Ответ 2

Я заметил, что мой файл database.php имел следующий

'sqlite' => [
    'driver' => 'sqlite',
    'database' => env('DB_DATABASE', database_path('database.sqlite')),
    'prefix' => '',
],

Я изменил его, чтобы прочитать следующее, и все получилось просто отлично.

'sqlite' => [
    'driver' => 'sqlite',
    'database' => database_path('database.sqlite'),
    'prefix' => '',
],

Ответ 4

Одна из проблем, с которой я столкнулся, - это использование "touch storage/database.sqlite" в терминале, поэтому база данных создается в папке "Хранилище" вместо папки базы данных.

в моем пути config/database.php указан путь database_path ('database.sqlite')

'sqlite' => [
        'driver' => 'sqlite',
        'database' => database_path('database.sqlite'),
        'prefix' => '',
    ],

чем я использую команду "php artisan migrate", которая дала мне ошибку "База данных (/Applications/MAMP/htdocs/FOLDER_NAME/database/database.sqlite) делает  не существует".

так что очевидный файл базы данных не находится в папке базы данных, поскольку он был сгенерирован в папке "Хранилище", поэтому скопируйте "database.sqlite" из папки хранилища или запустите команду "touch database/database.sqlite"

Надеюсь, что это поможет.!!

Ответ 5

Хорошо, мой ответ немного устарел, но в любом случае. Я столкнулся с той же проблемой, но с Laravel 5 я использую Windows 7 x64. Сначала я вручную создал базу данных SQLite под названием "db" и поместил ее в каталог хранения, а затем установил мой .env файл следующим образом:

APP_ENV=local
APP_DEBUG=true
APP_KEY=oBxQMkpqbENPb07bLccw6Xv7opAiG3Jp

DB_HOST=localhost
DB_DATABASE='db'
DB_USERNAME=''
DB_PASSWORD=''

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null`

Я думал, что это исправит мои проблемы, но в командной строке сказано, что база данных не существует. И тогда я просто проверил путь к db в моем файле database.php, и именно поэтому я поместил файл базы данных в каталог хранилища. Но ничего не изменилось. И, наконец, я проверил расширение db, и это было .db, а не .sqlite как расширение по умолчанию, которое вы видите в своем блоке sqlite в файле database.php. Так вот как я переконфигурировал кусок sqlite:

'sqlite' => [
    'driver'   => 'sqlite',
    'database' => storage_path().'/db.db',
    'prefix'   => '',
],

И, конечно же, не забудьте установить sqlite в качестве базы данных по умолчанию в файле database.php. Удачи!