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

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

関連記事

ruby on railsのckeditorでcarrierwaveを使って画像をアップロードする

概要 みなさんこんにちはcandleです。今回はckeditorの画像のアップロードを行ってみたいと思います。 ckeditorの画像のアップロードは公式githubにも記載されているのですが、まあや …

grepコマンドを使って正規表現を色々試してみるその1

概要 みなさんこんにちはcandleです。今回からgrepコマンドを使って正規表現を色々試してみます。 正規表現って、使えると便利ですが、それを勉強して使いこなせている人って少ないと思います。この機会 …

ruby on railsのデータベースのテーブルにカラムを追加、削除する

概要 みなさんこんにちはcandleです。今回はrailsのカラムの追加の仕方を紹介します。 本当にrailsは規約が多くて、多くて、なんでデータベースを直接いじれないんだと。 早速やっていきましょう …

Rails pluginを使ったgemの作り方[4](controller helper編)

概要 みなさんこんにちはcandleです。今回はgemの中枢とも言えるhelperの作り方です。 helperというのは様はgemにすることで便利になる関数を作るとというイメージです。 例えば、con …

fabricのsshのネットワーク設定でパスワードか公開鍵を使って認証する

概要 皆さん今日はcandleです。今回はsshを使ったfabricの設定をしましょう。 一般にsshにはパスワード認証と公開鍵認証があるので、そのどちらも試してみましょう。 もちろんセキュリティ面で …

  • English
  • 日本語

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