首页 > 解决方案 > Laravel:找不到 SQLite 数据库

问题描述

我总是得到一个错误说:

数据库(/Users/yonamineakio/Desktop/laravel_portfolio/database/database.sqlite)不存在。(SQL: PRAGMA foreign_keys = ON;)

我想我设置了一些正确的值,但上面提到的错误总是发生。这是一些文件:

数据库.php

?php

use Illuminate\Support\Str;

return [
    'default' => env('DB_CONNECTION', 'sqlite'),
    'connections' => [
        'sqlite' => [
            'driver' => 'sqlite',
            'url' => env('DATABASE_URL'),
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
            'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
        ]
    ]
]

.env

DB_CONNECTION=sqlite
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=/database/database.sqlite
DB_USERNAME=root
DB_PASSWORD=

人.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use llluminate\Database\Eloquent\Builder;

class Person extends Model
{
    protected $guarded = array('id');
    public static $rules = array(
        'name'=> 'required',
        'mail'=> 'email',
        'age'=> 'integer'
    );
}

个人控制器.php

<?php

namespace App\Http\Controllers;
use App\Person;
use Illuminate\Http\Request;

class PersonController extends Controller
{
    public function index(Request $request) {
        $items = Person::all();
        $user = Auth::user();
        $params = ['user'=>$user, 'items'=>$items];
        return view('person.index', $params);
    }

    public function create(Request $request) {
        return view('person.create');
    }

    public function store(Requst $request) {
        $this->validate($request, Person::$rules);
        $person = new Person;
        $form = $request->all();
        unset($form['_token']);
        $person->fill($form)->save();
        return view('perosns');
    }

    public function show(Request $request) {
        $id = $request->id;
        $person = Person::find($id);
        return view('persons.show', ['person'=> $person]);
    }

    public function edit(Request $request) {
        $id = $requset->id;
        $person = Person::find($id);
        return view('persons', ['person' => $person]);
    }

    public function update(Reqeust $reqeuest){
        $this->validate($reqeuest, Person::$rules);
        $id = $request->id;
        $person = Person::find($id);
        $form = $request->all();
        $person->fill($form)->save();
        return redirect('/persons');
    }

    public function remove(Request $request){
        Person::find($request->id)->delete();
        return redirect('/person');
    }
}

我完全不知道如何解决上述问题。任何知道该怎么做的人请帮助我。如果您想了解更多信息,请告诉我。

谢谢你。

标签: phplaravel

解决方案


就像用户 @umefarooq 评论的那样,问题出在您的 .env 文件中。

这是一个仅使用 SQLite 相关环境变量的配置:

DB_CONNECTION=sqlite
#DB_HOST=127.0.0.1 ## Not required for SQLite
#DB_PORT=3306 ## Not required for SQLite
DB_DATABASE=/database/database.sqlite
#DB_USERNAME=root ## Not required for SQLite
#DB_PASSWORD= ## Not required for SQLite
DB_FOREIGN_KEYS=true

确保您运行迁移php artisan migrate并检查您的数据库文件是否存在于: /Users/yonamineakio/Desktop/laravel_portfolio/database/database.sqlite.

请参阅 SQLite 的 Laravel 文档:


推荐阅读