質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.33%

  • Laravel 5

    2099questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

  • SQLite

    669questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

LaravelでSQLiteを使いたいが接続できない

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 668

Hirasaking

score 22

 前提・実現したいこと

こちらの書籍を参考にSQLiteを試しています。

PHPフレームワーク Laravel入門
http://www.shuwasystem.co.jp/products/7980html/5258.html

基本的なファイルなどは準備したつもりですが、接続時にエラーが発生しており解決できていません。
いろいろ変えたもののハマっているため、怪しい点をアドバイス頂ければ大変助かります。

 発生している問題・エラーメッセージ

Database (database.sqlite) does not exist. (SQL: select * from people)

ソース

database.php

<?php

return [
    'default' => env('DB_CONNECTION', 'sqlite'),
    'connections' => [

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

~以下省略

.env

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:pOeo3jXaD/RQ96FdaEXy5AuJNfLPyxgIZOc0gUMsERM=
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

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

~以下省略

HelloController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;


class HelloController extends Controller
{

    public function index(Request $request)
    {
       $items = DB::select('select * from people');
       return view('hello.index', ['items' => $items]);
    }

   public function post(Request $request)
   {
       $validate_rule = [
           'name' => 'required',
           'mail' => 'email',
           'age' => 'numeric|between:0,150',
       ];
   }

}

index.blade.php

@extends('layouts.helloapp')

@section('title', 'Index')

@section('menubar')
   @parent
   SQLiteの読み込み
@endsection

@section('content')
   <table>
   <tr><th>Name</th><th>Mail</th><th>Age</th></tr>
   @foreach ($items as $item)
       <tr>
           <td>{{$item->name}}</td>
           <td>{{$item->mail}}</td>
           <td>{{$item->age}}</td>
       </tr>
   @endforeach
   </table>
@endsection

@section('footer')
copyright 2017 tuyano.
@endsection

web.php

<?php

use App\Http\Middleware\HelloMiddleware;


Route::get('/', function () {
    return view('welcome');
});

Route::get('hello', 'HelloController@index');

SQLiteが動くことは確認済

イメージ説明

SQLiteファイルの場所

C:\xampp\htdocs\laravel\databaseの直下

イメージ説明

 試したこと

  • 写経の後にサンプルソースをコピペ
  • sqliteファイルを削除して再作成
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Orlofsky

    2018/07/05 22:13

    URLは https://teratail.com/help#about-markdown の[リンク]を使ってください。エラーメッセージでここの掲示板で検索するなり、ググるなりされては?

    キャンセル

  • Hirasaking

    2018/07/06 08:25

    今後この機能つかっていきます。似たような質問はありましたが解決できていません。

    キャンセル

回答 2

+2

もう解決しましたか?
同じ書籍、同じ箇所で同じ問題に遭遇した者ですが、
・DB_DATABASEの絶対パス表記
・.envの変更内容の反映
で解決すると思います。

.envの変更内容を反映については、僕はlaravel serverを再起動しましたが、このような方法もあるようです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/09/23 23:30 編集

    私も同書籍で同じ問題に遭遇しました。
    そして、最初に rururu3 さんが提示された参照記事の方法を採用し解決できました。
    ( .env のDB設定の DB_CONNECTION 以外を全てコメントアウトする)

    絶対パスで指定すると、環境で絶対パスが変わると書き換えなければなりません。
    また、サーバーと同期させる際、.env を対象から外す設定が必要になったりと複雑になってしまいます。

    キャンセル

0

LaravelでSQLiteを使いたい

全く同じような質問と回答を見つけましたので参考にしてみたらいかがでしょう

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/06 08:26

    似たような質問はありましたが解決できていません。いったんMYSQLで代用して別の機会に試してみます。

    キャンセル

  • 2018/07/06 12:04 編集

    環境作って
    DB_DATABASE=database/database.sqlite
    をコメントするしないで同様の現象発生および解決の切り替えができるの確認したのですが、ならないとなるとdatabase.sqliteの権限とかかな
    ※DB_DATABASEに設定するのは絶対パスです(configファイル見るとわかるかと思いますが、コメントをした場合はデフォルトで/laravel環境のパス/database/database.sqliteを見に行くようになってます

    キャンセル

同じタグがついた質問を見る

  • Laravel 5

    2099questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

  • SQLite

    669questions

    SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。