joppot

コピペで絶対動く。説明を妥協しない

プログラミング

MAMPのSQLiteManagerを使用してsqlite3のテーブルの作成とフィールドの設定、レーコードの挿入を試す

投稿日:2014年2月7日 更新日:


f

概要

みなさんこんにちはcandleです。前回と引き続き、SQLiteManagerを使用してsqlite3を試してみましょう。

はじめに、書いておきますが、MAMPのSQLiteManagerはSQLite3に対していくつかバグがあり、phpが動作しなかったり、レコードが削除できなかったりします。

対処法としては、自分で別のSQLiteManagerを入れるなどあるかもしれませんが、別に全ての動作をSQLiteManagerでやらなければよい話です。必要とあらば、SQLクエリーをなげたり、自分でphpアプリケーションを作ればなんとかなります。

前提

  1. PHPが5.3以上上である
  2. SQLite3のデータベースが作られている

もしも、データベースが無い場合はこのブログの前回の記事を参照してください。

MAMPのSQLiteManagerを使用してsqlite3データベースの作成とデータベースファイルの設置

SQLiteManagerでテーブルを作る

それでは簡単なテーブルを作りましょう。よくあるthreadテーブルを作ります。

要素はid、name、title、content、created、modifiedにします。

名前の項目に「thread」と書き、フィールド数は6にします。そしたら、実行を押しましょう。

MAMP-6 2

一つ一つ埋めていきます。

  • idはint型でnot null でプライマリーにしておきます。]
  • nameはvarchar型で長さを255にします。
  • titleもvarchar型で長さを255にします。
  • contentはtext型にして長さは指定しません。
  • createdはdatetimeを指定して、not nullにします。
  • modifiedはtimestamp型でnot nullにします。

記入できたら、保存を押しましょう。

下のような画面が出たら成功です。

レコードを挿入する

ではthreadテーブルにサンプルデータを挿入しましょう。
「挿入」タブを選びます。

MAMP-5

  • idにあるnullの所のチェックを外します。idの値は「1」にします。
  • nameの値は例として「candle」にします。
  • titleの値は「hello」
  • contentの値は「good job!」

で、ここに1つバグがあります。
createdとmodifiedの値は「関数」からNOWを指定して、SQLiteに現在時刻を挿入してほしいのですが、SQLite3を使用しているとこのコマンドが動作しません。手で書いて入力します。

createdの値は「2014-02-03 12:30:25」と入力します。
modifiedですがこれもバグがあります。modifiedの値はcreatedと同じですが、クォーテーションで囲いましょう「’2014-02-03 12:30:25’」
下の様に記入したら、保存を押しましょう。

MAMP

レコードが保存されたら、成功です。

MAMP 2

今後のために、もう2つほどレコードを挿入しておいてください。SQLタブを押しましょう。

MAMP-5 2

下のsqlクエリーをコピペします。で次が重要です。

INSERT INTO 'thread' ( 'id' , 'name' , 'title' , 'content' , 'created' , 'modified' ) 
VALUES ( 2 , 'bob' , 'morning' , 'sleepy' , '2014-02-03 13:15:51' , '2014-02-03 13:15:51');
INSERT INTO 'thread' ( 'id' , 'name' , 'title' , 'content' , 'created' , 'modified' ) 
VALUES ( 3 , 'アリス' , '納豆' , '日本語も使えるよ' , '2014-02-03 15:43:16' , '2014-02-03 15:43:16');

コピペしたテキストエリアは狭いので複数行に改行されますが、これをそのまま実行するとこの改行までデータベースに収まり、正しく値が認識されません。なんでこんなエラーがあるのか分かりませんが、すごく変なバグです。下の図を見てください。modifiedの2014-02-03 15:43:16途中で改行されています。これでは問題なので、テキストエリアの右下をマウスで持って広げてください。

MAMP 3

広げたら下の様になると思います。
途中で改行されてないことを確認したら、「実行」ボタンを押しましょう。

MAMP 5

確認しましょう。

MAMP 4

まとめ

この他の機能はいろいろ試してみれば分かると思います。とにかく、MAMPのSQLiteMangerはバグが多いので注意しましょう。レコードのアクション欄のレコードのデリートはsqlite3だとうまく動きませんので、SQLクエリーを発行して消したりしましょう

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

fabricでvagrantのデフォルトの秘密鍵を使ってサーバにアクセスする

概要 みなさんこんにちはcandleです。今回はfabricを使ってvagrant上のvmにアクセスする方法を紹介します。様々なサイトを閲覧すると、あまりvagrantのデフォルトの鍵を使用して、fa …

railsのform_forとstrong parametersを使用して画像をアップロードする

概要 みなさんこんにちはcandleです。今回はrailsのform_forを使って、railsプロジェクトのpublicディレクトリに画像をアップロードしてみましょう。 form_forは基本的にデ …

ruby on railsのckeditorをdeviseを用いて複数人で投稿できるようにする

概要 みなさんこんにちはcandleです。今回はckeditorの複数人投稿機能をdeviseを用いてやってみたいと思います。ckeditorを使うと分かると思うのですが、誰でも画像のアップロードや削 …

railsのfluent-loggerとdevise gemを使ってユーザーの行動をfluentdサーバに収集する

概要 fluentdと言えば、ビックデータで扱うようなデータを集め出力するサーバですが、これとrailsのfluent-logger gemとdevise gemを組み合わせてユーザーの行動ログをとっ …

railsのscaffoldでremote formで送信後jsonを取得する

概要 みなさんこんにちはcandleです。 今回はrailsのformをremoteを使ってajaxした時に、 サーバに送った値をjavascript側で受け取る方法を紹介します。 ちなみに、私は下の …

  • English
  • 日本語

ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー