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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

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

Laravel 5

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

Q&A

解決済

2回答

9943閲覧

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

Hirakin3

総合スコア33

SQLite

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

Laravel 5

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

1グッド

2クリップ

投稿2018/07/05 11:59

編集2018/07/05 12:03

前提・実現したいこと

こちらの書籍を参考に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

1<?php 2 3return [ 4 'default' => env('DB_CONNECTION', 'sqlite'), 5 'connections' => [ 6 7 'sqlite' => [ 8 'driver' => 'sqlite', 9 'database' => env('DB_DATABASE', database_path('database.sqlite')), 10 'prefix' => '', 11 ], 12 13~以下省略 14

.env

php

1APP_NAME=Laravel 2APP_ENV=local 3APP_KEY=base64:pOeo3jXaD/RQ96FdaEXy5AuJNfLPyxgIZOc0gUMsERM= 4APP_DEBUG=true 5APP_URL=http://localhost 6 7LOG_CHANNEL=stack 8 9DB_CONNECTION=sqlite 10DB_HOST=127.0.0.1 11DB_PORT=3306 12DB_DATABASE=database/database.sqlite 13DB_USERNAME= 14DB_PASSWORD= 15 16~以下省略 17

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

1<?php 2 3use App\Http\Middleware\HelloMiddleware; 4 5 6Route::get('/', function () { 7 return view('welcome'); 8}); 9 10Route::get('hello', 'HelloController@index');

###SQLiteが動くことは確認済
イメージ説明

###SQLiteファイルの場所

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

イメージ説明

試したこと

  • 写経の後にサンプルソースをコピペ
  • sqliteファイルを削除して再作成
muumuuland👍を押しています

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hirakin3

2018/07/05 23:25

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

回答2

0

ベストアンサー

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

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

投稿2018/08/07 05:02

takg

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takna

2018/09/23 14:35 編集

私も同書籍で同じ問題に遭遇しました。 そして、最初に rururu3 さんが提示された参照記事の方法を採用し解決できました。 ( .env のDB設定の DB_CONNECTION 以外を全てコメントアウトする) 絶対パスで指定すると、環境で絶対パスが変わると書き換えなければなりません。 また、サーバーと同期させる際、.env を対象から外す設定が必要になったりと複雑になってしまいます。
guest

0

LaravelでSQLiteを使いたい

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

投稿2018/07/05 16:25

rururu3

総合スコア5545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hirakin3

2018/07/05 23:26

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

2018/07/06 03:09 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問