尝试在开发环境中使用sqlite。它似乎正确地检测到环境但是当我尝试迁移到development.sqlite时,我得到异常抛出“数据库不存在”
工匠命令
php artisan migrate --env=development
自举/ start.php
$env = $app->detectEnvironment(array(
'development' => array('localhost'),
));
应用程序/配置/开发/ database.php中
<?php
return array(
'default' => 'sqlite',
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => __DIR__.'/../database/development.sqlite',
'prefix' => '',
)
)
);
据我所知,laravel应该创建该文件,如果它不存在但是因为它没有我尝试手动创建文件并仍然抛出异常。
更新:也许用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);
}
虽然测试环境已经附带了laravel,但这也给出了同样的例外。所以我会看看我是否可以找到任何新问题。
答案 0 :(得分:22)
哇,错别字和错误的路径。
将sqlite数组从config / database.php复制到config / development / database.php我忘了从
更改development.sqlite文件的路径__DIR__.'/../database/development.sqlite'
到
__DIR__.'/../../database/development.sqlite'
对于内存测试,应该是
':memory:'
而不是
':memory'
答案 1 :(得分:2)
我注意到我的database.php文件包含以下内容
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
我改变它以阅读以下内容,它工作得很好。
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
],
答案 2 :(得分:1)
我遇到的一个问题是我使用&#34; touch storage / database.sqlite&#34;在终端中,因此数据库是在Storage文件夹而不是数据库文件夹中创建的。
我的config / database.php路径中的是database_path(&#39; database.sqlite&#39;)
'sqlite' => [
'driver' => 'sqlite',
'database' => database_path('database.sqlite'),
'prefix' => '',
],
比我使用命令&#34; php artisan migrate&#34;这给了我错误&#34;数据库(/Applications/MAMP/htdocs/FOLDER_NAME/database/database.sqlite) 不存在。&#34;
所以它显而易见的数据库文件不在数据库文件夹中,因为它是在Storage文件夹中生成的,所以复制&#34; database.sqlite&#34;从存储文件夹或运行命令&#34; touch database / database.sqlite&#34;
希望有所帮助。!!