SQLite」タグアーカイブ

SQLite Integrationの『Notice: Undefined property』対応

wordpressを5.0にしたら、SQLプラグイン『SQLite Integration』にて

Notice: Undefined property: stdClass::$compile_option in ~

といった426行目・424行目原因指定のNoticeエラーがたくさん出てくるようになった。

これは書かれている通り『$compile_option』がないせい。
まぁ、このプラグイン公開されてから大分放置されているしね…

---後日談---
5.1にしたらなんと『compile_option』に戻っていた。
よって、修正は不要なのだ!
都合上5.0を使いたい人だけ直せばいいんじゃないですか話ということで、記事は残しておく。
---------- ココマデ ----------
続きを読む

FuelPHP1.8を使うまで

簡易的なWEBアプリを作るにはモッテコイでお馴染みFuelPHP。
数年ぶりに使ったらすっかり使い方を忘れてしまった…!
バージョンアップしてるのもあるしね、仕方ないんじゃないですかね?へへへ

FuelPHPを使うにあたって、何をしたかのメモ。
続きを読む

SQLiteファイルをデフラグする

wordpressにて、記事等を追加していくと、比例してファイルサイズが大きくなる。
しかし記事・カテゴリ・タグ等をデータを削除したとしても、比例して容量が減るわけではない

というのも、MySQLでもお馴染みの『空いた領域をそのまま維持して、後でデータが追加された場合に利用する』というDBの仕様のためらしい。

記事・カテゴリの追加・削除の繰り返しにより細切れ領域が増え、アクセスに影響が起きるわけである。

ということで、
必要なのは『SQLiteデータベースファイルのデフラグ』。
なので、その仕方についてのメモ。
続きを読む

[wp×SQLite]ページ送り『SELECT FOUND_ROWS()』対応

categoryとかarchiveとか一覧表示すると次のページとかのリンクが出ない。
そんな条件がなければ出るのに…

つまりページ数認識ではないか?

調べてみたところ、結構な記事数があるカテゴリでも
『$wp_query->max_num_pages』が『1ページ』となってしまっている。

つまりSQL文がオカシイ

こんな単純なミスが修正されないハズがないので、
またSQLiteとMySQLとの仕様差異と皆気づくところ。

WP_Queryはwp-includes/query.phpにあるので確認したところ、そりゃ当然アタリ。
続きを読む

PDOを使ったSQLite接続

DBを使用したプログラムを作る際、本番と開発環境を統一化したい人間は一定数いると思う。
そんな人にオススメする『SQLite3』。

けれども後程MySQLとかDBとも切り替えねばならないときもある。
なので『PDO』を使いたい。

PDOでSQLiteということは、wordpressのプラグインと同じじゃないの。
てことで、
仕組みを見ながら(ほんのりパクりながら)作成・操作したメモ。
続きを読む

[wp×SQLite]一部使えないプラグイン対応

色々変わって読みづらくなったので、いっそ書き換え

例えば
SELECT p.post_title FROM テーブル AS p
というSQLがあるとする。

MySQLなら配列は『$うんつら["post_title"]』として返してもらえるんだけど、
SQLiteだと『$うんつら["q.post_title"]』として返される。

そのせいでSimple Tags等、巧く動かないプラグインが多数ある。

前回同様SQL文を書き換えようと思ったのだけど、
『q.post_title as post_title』みたいに
『AS うんつら』と既に宣言されているものもあるのだから、なかなか巧くいかない。
※q.post_title as post_title AS post_title as post_title てなる

そこで『配列の添字を書き換えて作り直す』修正をする。
続きを読む

[wp×SQLite]ページ編集が巧くいかない

ページの編集が巧く使えない。
あくまでページ編集。
原因は$hierarchical_post_types[0]がうまく取得出来ないとこにあった。
SQLiteとMySQLで使えるSQLが違うから、他にも出てくるかもしれない。
続きを読む

[wp×SQLite]日付から記事取得

WordPressでSQLiteを使うと、年・月・日 つまりは日付から記事を読み出すのがうまくいかない。
これはMySQLとSQLiteとでSQL文が違うために起きている。

言わば、『MySQLとは違うのだよ MySQLとは!!!』ということ

『YEAR(wp_posts.post_date)=2009』は
 『wp_posts.post_date like "2009-%"』か
 『strftime('%Y',wp_posts.post_date)='2009'』

『MONTH(wp_posts.post_date)=04』は
 『wp_posts.post_date like "%-04-%"』か
 『strftime('%m',wp_posts.post_date)='04'』

『DAYOFMONTH(wp_posts.post_date)=04』は
 『wp_posts.post_date like "%-04-%"』か
 『strftime('%d',wp_posts.post_date)='04'』
に修正が必要
続きを読む

SQLiteの特徴

wordpressではPDOを使うのSQLite3だけど
PEAR DB.php使う場合、SQLite2しか使用出来ない。

因みにデータ作成・変更はFirefoxアドオンのSQLite Managerがオススメだけど、SQLite3しか対応してない。

SQLite2を使いたい場合は、一度3で作成後、
sqlite3.exe
sqlite.exe(SQLIte2)
を使って変換する。
※リンクからDL出来るけど、最新版は英語読める人頑張って!
SQLite Download Page
『sqlite-shell-win32-x86-(バージョン).zip』がソレらしいという噂。
続きを読む

SQLiteのバージョン変換

最近、SQLiteを使うとしても、MDB2とか使うよね。
使うとしても、わざわざ『MDB2_Driver_sqlite』をインストールするなんて手間かけたりしないよね。

そこで、SQLite2からSQLite3形式に変換をすることと思う。
その方法。

sqlite3.exe
sqlite.exe(SQLIte2)
を使って変換するから、まずはインストールしておく。
※リンクからDL出来るけど、最新版は英語読める人頑張って!
続きを読む