SQLite」タグアーカイブ

[wp×SQLite]アクセスが重くなった際のDB掃除

記事とかのデータを追加していくとファイルサイズが大きくなるが、
記事を削除したり、カテゴリ・タグを削除したりしても、容量を食ったままになる。

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

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

ということで、
ここで必要になるのは『wordpress用SQLite用データベースファイルのデフラグ』
ということになるので、その仕方について。

PCにSQLite3が入っている想定で書いている。
SQLiteが自分のPCに入ってない人は、まず下記の記事をごらんくだされ。
>>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接続

今、ちょっとプログラムを作成中。
どうせなので、SQLite3。
やぱりどのDBとも切り替えられるようにしたいから、PDO。
PDOでSQLiteということは、wordpressのプラグインと同じじゃないの。
てことで、
仕組みを見ながら(ほんのりパクりながら)操作していきたいと思う。

でだ
パクるにしても、基本を知らなくてはダメだろう。
てことで、ちょっと接続テスト。

try {
    $dbh = new PDO('sqlite:'.$PgPath.'/database/CensorAccess.sqlite','', '');
} catch (PDOException $exception){
    echo "PDO生成時:";
    echo $exception->getMessage();
    exit();
}

コレだけに1時間半以上かけてしまった。

やはりまずは自分で作ってみるべきだったろうか…。

※参照

[wp×SQLite]Simple Tagsとか使う

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

例えば
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出来るけど、最新版は英語読める人頑張って!
続きを読む

[wp×SQLite]Hello WordPress×SQLite!!『PDO (SQLite) For WordPress』

WordPressはプラグインでSQLiteが使える。

オフラインでDB加工して本番でも使おうという目的のもと、
WordPressはSQLiteを使うということで決定した。

使用プラグイン

WordPress > PDO (SQLite) For WordPress ? WordPress Plugins
一言でプラグインとは言えど、普通のプラグインと使用・設置方法が違う。

設置環境

ローカル環境:windowsXP、xampp Ver1.7.0、PHP5
本番環境:Linux(ubuntu)、PHP5以外よく知らない
続きを読む