PHPのUse of undefined constantエラーに陥ってしまった

ちょっとした単純ミスで、数日棒に振ってしまったので戒めを込めてメモしておきます。

このところ、CakePHP3の勉強をしています。そこで、CakePHPのデータベースの設定をしようと、configフォルダのapp.phpというファイルのDatasourcesという項目について設定してました。

使うデータベースはSQLiteです。

公式のCakePHPのDocumentによると、SQLiteを使う場合には、databaseという欄に絶対パスでデータベースの場所を指定しなければいけないみたいです。説明は以下のとおり。

database
The name of the database for this connection to use. Avoid using . in your database name. Because of how it complicates identifier quoting CakePHP does not support . in database names. The path to your SQLite database should be an absolute path (e.g. ROOT . DS . ‘my_app.db’) to avoid incorrect paths caused by relative paths.

Database Basics - 3.10

そこで私は、書かれているとおり、絶対パスで指定することにしました。sqliteファイルは自分のAppフォルダ内に新規に「db」というフォルダを作り、その中にsqliteファイルを生成しておきました。

したがって、私の場合のsqliteファイルの絶対パスは、「ROOT . DS . ‘db’ . DS . ‘my_app.sqlite3」となるはずです。しかしながら、私は何を考えたのか「Root . DS . ‘db’ . DS . ‘my_app.sqlite3」としてしまいました。

その時に出たのが、「Use of undefined constant」というエラーメッセージです。このエラーについて調べると、これは、未定義定数を使ったという意味なのですが、多くの場合、単純な入力ミスのときに出たというケースが多いみたいなので、このメッセージがでたときには、エラー箇所の入力ミスを疑ってみてください!ということでした。

でも、そんなことはこのエラーが出たすぐの段階からわかっていること!だからこそ、何回もミスを確認したつもりだったのです!でも、何回確認しても、ミスっているところはないと思い込んでおり、エラー表示3日目にして、解決をあきらめてしまったのです。

(@_@;)

 

それから、また数日後、エラーが出ていたコードを見返してみると、「Root . DS . ‘db’ . DS . ‘my_app.sqlite3」という部分で、冒頭から定数なのですべて大文字なはずのものが「Root」と小文字交じりになっていることに気が付き、「ばっきゃやろー、凡ミス中の凡ミスじゃないか!!!」ってことで、今やっとエラーを取り除くことができたのです!

よかったよかった(^▽^;)

 

ということで、今日のまとめなんですけど、

1度自分の中に深く思い込んでしまったものは、それがたとえ間違いであったとしても、なかなかその間違いに気づかないんですよね。その思い込みから抜け出すには、私みたいに時間をおいて気持ちをリセットするのか、周りの信頼できる人に意見してもらうのかのどちらかぐらいだと思います。

でも、もっともっと確認に確認を重ねれば、思い込みによるミスを回避できたようにも思えるので、自分の愚かさを認めることと、自分ならばそのミスを解決できるという信念が同時に必要なのかなと思いました。

人に意見してもらったり、あきらめて時間を捨てるのではなく、自分でやり続けろ!ということですね。

 

ただの凡ミスちゃんなのに、何を言っているんだ?ですよね。

 

とりあえずもうすこしだけCakePHPの勉強続けます。

 

コメント

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