尝试在开发环境中使用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应该创建该文件,但由于它不存在,我尝试手动创建该文件,但仍然抛出了异常。
UPDATE:可能是env有问题,因为如果我对数据库尝试':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);
}
这也给出了相同的例外,尽管测试env已经随laravel一起提供了。所以我会看看我是否能找到任何新的问题。
7条答案
按热度按时间neskvpey1#
哇,错别字和错误的路径。
将sqlite数组从config/database.php复制到config/development/database.php我忘记将开发.sqlite文件的路径从
至
对于内存测试,它应该是
代替
wsxa1bj12#
我注意到我的database.php文件有以下内容
我把它改成了下面的内容,它工作得很好。
xmd2e60i3#
其中一个问题,我面临的是我使用“触摸存储/数据库.sqlite”在终端,所以数据库是创建在存储文件夹,而不是数据库文件夹。
在我的config/database.php中,路径是database_path(“数据库. sqlite ')
而不是使用命令“php Artisan migrate”,它给了我错误“数据库(/应用程序/MAMP/htdocs/文件夹名称/数据库/数据库.sqlite)
不存在。”
因此很明显,数据库文件不在数据库文件夹中,因为它是在存储文件夹中生成的,所以从存储文件夹中复制“database.sqlite”或运行命令“touch database/database.sqlite”
希望这对你有帮助。
nom7f22z4#
好吧,我的答案是有点过时,但无论如何。我面临着同样的问题,但与Laravel 5,我使用Windows 7 x64。首先我手动创建名为'db'的SQLite数据库,并将其放入存储目录,然后修复我的.env文件,如下所示:
我以为它会解决我的问题,但命令行不断告诉我,数据库不存在。然后我只是检查了我的database.php文件中的db路径,这就是为什么我把数据库文件放在存储目录。但什么也没有改变。最后我检查了db的扩展名,它是.db。而不是database.php中sqlite块的默认扩展名.sqlite。因此,这就是我重新配置sqlite块的方式:
当然,不要忘记在database.php文件中将sqlite设置为默认数据库。祝你好运!
a14dhokn5#
对我来说,数据库的路径必须是
'/var/www/html' + location to the database in your project
。在我的例子中,数据库存储在database/db.sqlite中,所以DB_DATABASE='/var/www/html/database/db.sqlite'
wixjitnu6#
我在运行GitHub操作测试工作流时遇到了同样的错误。
对我来说,解决方案是在工作流文件中定义数据库存档的相对路径:
2w3kk1z57#
我认为前面的答案降低了配置的重要性,开发人员很可能希望获得如下的数据库文件:
在Laravel 9.x上测试