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

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

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

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

artisan

artisanは、PHP Laravelフレームワークのコマンドの事です。 Artisanコマンドを使う事で、DBのテーブルやバンドル等を追加することができるコマンドです。

Q&A

解決済

1回答

4029閲覧

Laravelでphp artisan db:seedが実行されない

kyoh11

総合スコア1

SQLite

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

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

artisan

artisanは、PHP Laravelフレームワークのコマンドの事です。 Artisanコマンドを使う事で、DBのテーブルやバンドル等を追加することができるコマンドです。

0グッド

0クリップ

投稿2021/10/16 22:48

前提・実現したいこと

AWSでPHP(Laravel)を使い家計簿アプリを作りたいと思っています。

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

Seederファイルを作成し、実行しようとしたところ
以下のエラーメッセージが発生しました。

ec2-user:~/environment/myapp $ php artisan db:seed Seeding: BooksTableSeeder Illuminate\Database\QueryException SQLSTATE[HY000]: General error: 1 table books has no column named inout (SQL: insert into "books" (" inout", "category", "year", "month", "amount", "updated_at", "created_at") values (1, 給料, 2021, 1, 25, 2021-10-16 07:33:22, 2021-10-16 07:33:22)) at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671 667| // If an exception occurs when attempting to run a query, we'll format the error 668| // message to include the bindings with SQL, which will make this exception a 669| // lot more helpful to the developer instead of just the database's errors. 670| catch (Exception $e) { > 671| throw new QueryException( 672| $query, $this->prepareBindings($bindings), $e 673| ); 674| } 675| +18 vendor frames 19 database/seeds/BooksTableSeeder.php:15 Illuminate\Database\Eloquent\Model::__callStatic("create") +7 vendor frames 27 database/seeds/DatabaseSeeder.php:14 Illuminate\Database\Seeder::call("BooksTableSeeder")

該当のソースコード

DatabaseSeeder.php

<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $this->call([BooksTableSeeder::class]); } }

BooksTableSeeder.php

<?php use Illuminate\Database\Seeder; use App\Book; class BooksTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Book:: create([' inout' => 1, 'category' => "給料", 'year' => 2021, 'month' => 1, 'amount' => 25]); Book:: create([' inout' => 2, 'category' => "光熱費", 'year' => 2021, 'month' => 1, 'amount' => 2]); Book:: create([' inout' => 2, 'category' => "食費", 'year' => 2021, 'month' => 2, 'amount' => 5]); Book:: create([' inout' => 2, 'category' => "家賃", 'year' => 2021, 'month' => 3, 'amount' => 7]); Book:: create([' inout' => 1, 'category' => "副業", 'year' => 2020, 'month' => 1, 'amount' => 5]); } }

試したこと

databaseファイルに作成されたdatabase.sqliteを削除してもう一度作り直しましたが、
結果は変わりませんでした。

sqlite> .schema books CREATE TABLE "books" ("id" integer not null primary key autoincrement, "inout" integer not null, "category" varchar not null, "year" integer not null, "month" integer not null, "amount" integer not null, "created_at" datetime null, "updated_at" datetime null); sqlite> touch database/database.sqlite ...> ...> ^C ...> ;Error: near "touch": syntax error sqlite> .exit ec2-user:~/environment/myapp $ touch database/database.sqlite ec2-user:~/environment/myapp $ sqlite3 database/database.sqlite SQLite version 3.7.17 2013-05-20 00:56:22 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> .schema books CREATE TABLE "books" ("id" integer not null primary key autoincrement, "inout" integer not null, "category" varchar not null, "year" integer not null, "month" integer not null, "amount" integer not null, "created_at" datetime null, "updated_at" datetime null); sqlite> .exit

エラー内容を見て、端的に
「Connection.phpにカラムがありません」という意味だと思いました。
BookstableSeeder.phpに記述したカラムの情報などを
Connection.phpにも追記する必要があるのでしょうか?
ご教授お願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Illuminate\Database\QueryException SQLSTATE[HY000]: General error: 1 table books has no column named inout (SQL: insert into "books" (" inout", "category", "year", "month", "amount", "updated_at", "created_at") values (1, 給料, 2021, 1, 25, 2021-10-16 07:33:22, 2021-10-16 07:33:22))

上記エラーから

  • SQLの実行時に例外が発生している
  • エラーの内容は「booksテーブルに inoutカラムがない」

ということが分かります。

Connection.phpは例外をthrowしているLaravelのファイルなので修正の必要はありません。

コードを見ますと、カラム名が「inout」ではなく「 inout」になっています。inoutの前にある不要なスペースを削除してみてください。

Book:: create([' inout' => 1, ...

また、Book:: の直後のスペースはあっても動きますが、多くのコーディングルールではこの位置にスペースは入れません。

投稿2021/10/17 00:02

Eggpan

総合スコア3205

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

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

kyoh11

2021/10/17 01:58

ありがとうございます!! inoutの前のスペースを削除したら解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問