MySql + Node.jsでエラー プログラミングでハマった場合の対応定石

ご訪問ありがとうございます。

プログラミング中、「エラーがどうしても解決できない」場合や「どうしても意図した動作をしない」場合に、必要以上に時間を食いつぶし、解決方法が見いだせずにいる状況のことを「ハマる」っていうそうです。

私、スクールの実習の一部で「MySql と Node.js+ExpressでWebアプリを作る」プロジェクト中、ExpressがどうしてもDataBaseを読み込んでくれず、丸2日くらい「ハマって」しまいました。
そのときのことを紹介します。

ExpressがDataBaseを読み込まない

DataBaseを作成し、テーブルを作成。

Node+Expressの設定も完了済みの状態でapp.jsを実行してみると、次のようなエラーが。

表示用テンプレートindex.ejsはDB読み込みとは関係あることは書いてないのですが、なぜかこのエラーが。

 

 

MySql上では次のような「Syntaxにエラーがあります」エラーで、これだけでは真の原因までは分からないのです。

エラーが出つつもDataBase自体は作成できてしまうので。

 

SQL Statement:
CREATE TABLE 'express-practice1-db', 'new_table' (
)

ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySql server version for the right syntax to use near ")" at line 2.

 

 

試行錯誤の結果、もしかしてDB名が長過ぎるのか?という考えに至り、「expressdb」と変更したらエラーが消え、ExpressでDataBaseの取り込みと表示ができました。。

 

 

後から調べたところ、「express-practice1-db」というDataBase名のハイフンがエラーの原因だったようです。

どうしてもDataBase名にハイフンを使いたくば、「`express-practice1-db`」とバッククオートで囲んだ名称にしなくてはいけないとのこと。

まったく気が付きませんでした。

今回の「どハマり」から得た教訓とプログラミング教室の先生からのアドバイス

  • 調べるのに時間がかかるのは仕方がない。場数をこなして検索と問題解決のセンスを付けていくこと
  • 原因がわからないときは、新規プロジェクトを一から作ってみることも一つの選択肢。目に見えづらい構成ファイルの競合などが原因だったりする場合もあるので、必ずしも原因が特定できるとは限らないため。
  • ITのエンジニアリングは、実際のモノのエンジニアリングと違って、人の力で原因が見えない問題がたくさん出てくる。見えないモノを探し続けてもキリがないので、ちゃんと動く新しいもので作り直すというのが一つの定石

 

ちなみに、上記のプログラミングの先生は私が受講した侍エンジニア塾のI先生のアドバイスです。

私は自宅でプログラミングの授業を受けたかったので、非常に助かりました。

私はプログラミング教室は、自宅受講と通学制と両方教室に通ったことがあるので、感想を述べておきますと、通いか通信かで授業の質自体は変わらなかったです。

オンラインでの授業の様子は分かりにくいですが、私がお世話になった侍エンジニア塾さんの公式ページに詳しく内容が書いてあります。
よろしければ参考にされてくださいね。

タイトルとURLをコピーしました