【问题标题】:laravel development environment sqlite database does not existlaravel开发环境sqlite数据库不存在
【发布时间】:2013-10-04 20:42:53
【问题描述】:

尝试在开发环境中使用 sqlite。它似乎可以正确检测环境,但是当我尝试迁移到 development.sqlite 时出现异常“数据库不存在”

工匠命令

php artisan migrate --env=development

bootstrap/start.php

$env = $app->detectEnvironment(array(

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

));

app/config/development/database.php

<?php

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

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

据我所知,如果文件不存在,laravel 应该创建文件,但由于它不存在,我尝试手动创建文件,但仍然抛出异常。

更新:环境可能有问题,因为如果我为数据库尝试 ':memory' 也会发生同样的事情。

更新 2:我尝试运行示例单元测试,但添加到 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);
    }

尽管测试环境已经随 laravel 一起提供,但这也给出了相同的异常。所以我会看看我是否能找到任何新的问题。

【问题讨论】:

    标签: sqlite laravel laravel-4


    【解决方案1】:

    好吧,我的回答有点过时了,但无论如何。我遇到了同样的问题,但是对于 Laravel 5,我使用的是 Windows 7 x64。首先,我手动创建了名为“db”的 SQLite 数据库并将其放入存储目录,然后像这样修复我的 .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`
    

    我以为它会解决我的问题,但命令行一直告诉我数据库不存在。然后我在我的 database.php 文件中检查了 db 的路径,这就是我将数据库文件放入存储目录的原因。但什么都没有改变。最后我检查了 db 的扩展名,它是 .db,而不是 .sqlite 作为您在 database.php 中的 sqlite 块中看到的默认扩展名。所以这就是我重新配置 sqlite 片段的方式:

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

    当然不要忘记在你的 database.php 文件中将 sqlite 设置为默认数据库。祝你好运!

    【讨论】:

      【解决方案2】:

      我遇到的一个问题是我在终端中使用“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”

      希望对您有所帮助。!!

      【讨论】:

        【解决方案3】:

        我注意到我的 database.php 文件有以下内容

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

        我将其更改为阅读以下内容,并且效果很好。

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

        【讨论】:

        • 您可以将 .env 中的 DB_DATABASE 值更改为您的 sqlite 文件的相对路径
        【解决方案4】:

        哇,错别字和错误的路径。

        将 sqlite 数组从 config/database.php 复制到 config/development/database.php 我忘了更改 development.sqlite 文件的路径

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

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

        对于内存测试,它应该是

        ':memory:'
        

        而不是

        ':memory'
        

        【讨论】:

          猜你喜欢
          • 2014-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-03
          • 2015-04-04
          • 2013-07-08
          • 1970-01-01
          相关资源
          最近更新 更多