概要
Rake TaskでデータベースSQLを実行するスクリプトを作成中にPostgreSQLでデータの挿入(INSERT INTO)を試みたものの、何度も下記のようなエラーが発生し、結構苦戦したので自分なりに調査してわかったことをまとめることにした。
環境
macOD Catalina 10.15.7
PostgreSQL 13.1
エラーの詳細
テーブルにレコードを挿入する一番基本的な下記のコマンドを実行しても毎回同様のエラーメッセージが発生していた
この時の自分は、varchar型のnameカラムに値( "sample_name" )を挿入しようとしていました
- 実行クエリ
INSERT INTO sample_table VALUES ("sample_name");
- 発生していたエラーメッセージ
column "sample_name" does not exist
解決方法
どうやら、Postgresqlはダブルクォーテーション("")とシングルクォーテーション('')を区別しているらしく、具体的な区別の仕方は、
-
ダブルクォーテーション("")は、カラム名などを表現する際に用います
-
シングルクォーテーション('')は、文字列定数を表現する際に用います
つまり今回の自分のケースに当てはめると、一生懸命"sample_name"として値を挿入しようとしていましたが、これは毎回sample_nameという名前のカラムとして認識されていたということになります。
実行クエリは以下のようになります。
INSERT INTO sample_table VALUES ('sample_name');
まとめ
かなりちょっとしたことではありますが、知っているか知らないかで大きく変わる知識かなと思います!
覚えておきましょう。