袖はなくとも振りたい

アウトプット用に作りました。Laravelのこととか書きます。

PDOException::("SQLSTATE[42000]:Syntax error or access violation: 1075 Incorrect table definition;

Laravel5.7、MySQLを使用してコメント機能的なものを作ろうと思いたつ。

 

1:データベースを作る

 →XAMPPのMySQL「Admin」で直接データベースを作っちゃう。

 このときの設定は 「utf8mb4_unicode_ci」にする

2:データベースの中のテーブルを作る

 →migrationファイルを作り各カラムを記述していく

f:id:smilegear1234:20181220000637j:plain

migrate

名付けのセンスやお作法は置いといて、とりあえずこんな感じに。

 

3:Shellでこのプロジェクトのフォルダ階層まで入って、いざ php artisan migrate!

 →めっちゃエラー出る。

 エラーを読むに

 

PDOException::("SQLSTATE[42000]:Syntax error or access violation: 1075 Incorrect table definition;

there can be only one auto column and it must be defined as a key")

 

えーと…

PDOException::( "SQLSTATE [42000]:構文エラーまたはアクセス違反:1075不正なテーブル定義。
オートコラムが1つしかなく、キーとして定義する必要があります)

 

という翻訳をヒントによくよくもとの記述を見てみると

$table->increments('hoge');

的な文を2つ書いていたのでした。(上の画像では直っています)

 

このincrements構文は、テーブルに新しくデータが保存する度に1増加して設定されるモノ、という感じのようです。

それこそ投稿Noなりなんなり、準にデータを追加していって、データ何番、みたいな管理をする時にいちいち最後のNo+1として保存して…みたいなことをしなくていいようにするためのものなんですね。便利

 

で、increments構文をSQLで指定する場合、

それは主キーでなければならない。

それは重複して設定されていてはいけない(主キーだからか)

というところに違反していたのでエラーが出ていたようです。

 

その他にも1箇所 ; を記述するのを忘れていたり、知ってる知らない以前のチェックも大事ですね。

 

ということでincrementsで書いていた2個目をおとなしくintegerで指定し直したら

無事にmigrateできてテーブルも出来上がっていました。

 

同じようなエラーでなんでやってなる人の手助けとなればイイナー