SQLiteの連番

2014/04/25 | SQLite

実はよくわかっていなかった、create tableの時の書き方。

  • id INT PRIMARY KEY
    idは主キーだけれど、自動で連番にはならない。
  • id INTEGER PRIMARY KEY
    idが主キーで、自動で連番になる。しかしシーケンスは作成されず、例えばtable内のデータを全削除すると再度1からになる。
  • id INTEGER PRIMARY KEY AUTOINCREMENT
    idが主キーで、自動連番。シーケンスが作成されて、値は再利用されない。145データを投入して、全削除したら、次のid値は146。初期化するにはシーケンスを0でupdateしてやる。

一つ賢くなった。

SQLiteManagerの文字コードは今もEUCだった

2012/07/07 | SQLite

久々にSQLiteManagerをダウンロードしてセットアップしたが、やっぱり昔と同じで日本語はEUCのままだった。バージョンが上がっているんじゃないかな、ということで新たにUTF-8への対応方法を調べてみた。作業した内容は./lang/japanese.inc.php。

ファイルをEUCとして開き、冒頭の10行目あたりの文字コードに関する設定を以下のように変更する。

$charset = ‘utf-8′;
$langSuffix = ‘ja-utf-8′;

そしてファイルをUTF-8にして保存する。これで終わり。 せっかく貴重な環境なのだから、誰か連絡してあげればいいのに(自分で連絡したほうが早い・・・か)。

SQLiteを使うとpdoでrowCount()できない

2011/10/11 | PDO, SQLite

SQLでinsert、update、delete文を発行して、結果として影響を受けた行数を知りたい場合がある。pdoの場合、rowCount()というメソッドで知ることが出来るのだが、SQLiteでは使えないことがわかった。PHPのマニュアル中のコメントを読むと、どうやら3系からNGのようだ。

SQLはプリペアードステートメントを使って実行しているんだが、やっぱり無理なんだろうか。SQLiteはちょっといろいろ癖があるっぽい感じだ。

SQLiteでunixタイムスタンプ値を日付に

2011/07/25 | SQLite

諸般の理由でSQLiteに日時を格納するときにUnixタイムスタンプの値を使っている。これを取り出すときに日時の形式にして表示するためのSQL文の記述方法のメモ。

SELECT datetime(datetime(カラム名, ‘unixepoch’),’localtime’) FROM テーブル名;

unixepochを指定することで一旦日時形式にしているのだが、これだとUTCとして取り扱うらしく、さらにlocaltime指定して、環境変数で指定されているタイムゾーン(日本のタイムゾーンであるJST)に変換している。

これ、よく使う。

設定用データベースが読込み専用になっています

2011/05/30 | SQLite

最近なぜかSQLiteをよく使っている。ほんの、ちょっとした、簡単なデータベースというところがとても魅力的。今までは、テキストファイルに書き出すような仕組みを使っていた部分も、SQLiteに置き換え中。やっぱり、検索とか、便利だしね。

で、SQLiteの管理ツール。最近は、基本的にFireFoxプラグインのSQLite Managerを使っている。昔はSQLite2が使いたくてNGだったけれど、最近はSQLite3しか使わないので基本的に問題ない。でもやっぱりサーバ上にあるデータをそのまま見たい場合もあるということで、PHP版管理ツールSQLite Managerを設置した。昔は管理ツールといえばコレだったので、特に悩むことはなかったんだけれど、何しろ久しぶりで。

「設定用データベースが読込み専用になっています」

あー、たしかそうだったよね。で、データベースはどこにあるんだっけ。ってことで以下のディレクトリとファイルのパーミッションを変更した。

chmod 777 ./include/
chmod 666 ./include/config.db
chmod 666 ./include/config3.db

これだけ。

そういえば、以前UTF-8を使うのにも一手間掛ける必要があったはずだけど、それはどうなったんだっけ。今んとこ日本語不要なので確認しないけど、もし必要な事態になったたらその時はちゃんと設定することにしょう。


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net