Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#51 2006-04-02 11:36:13

yama
Administrator
登録日: 2005-07-07
投稿: 1,269
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

試してみました。結果、ロリポップ撃沈です。
まったく同じエラーが表示されました。

Googleを見る限りではロリポップでSQLiteが使えるという情報
けっこうあるのですが、phpinfoには出てませんし…
(試す前に先にそこを確認すべきな。自分)

xreaでも試してみました。php4とphp5それぞれのサーバがありますが、
php5サーバでは問題なくインストール画面を表示できました。
もしこれでも同じエラーが表示されたら自分のインストール手順の
問題で軽く解決できるかと期待を持ってたので、ある意味残念。

以上、報告でした。

※追記
さくらやlolipopでMovable Type+SQLiteでの稼働実績報告が多いのは、
Perlベースで動いているからなんですね。php4ベースではSQLiteにアクセス
できなくて当然、みたいな。基本的なことなんでしょうけど、知らなかった…汗

オフライン

#52 2006-04-02 12:02:49

mekyo
メンバー
登録日: 2005-11-22
投稿: 80

Re: SQLite版Nucleus3.3 βバージョン

yama.kyms さんの発言:

php4ベースではSQLiteにアクセス
できなくて当然、みたいな。基本的なことなんでしょうけど、知らなかった…汗

http://jp.php.net/manual/ja/ref.sqlite.php

必要な設定をすると 使えます

ただし、さくらは、 linuxではないので
php4に そのまま 公式ページのコンパイル済みのsqliteのsoファイルを持っていっても動きません。


php5は標準で SQliteが使えるのでなにもしなくても使えます。

オフライン

#53 2006-04-02 17:59:13

yama
Administrator
登録日: 2005-07-07
投稿: 1,269
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

入手したSQlite.soをロリポップの「/test/nucleus/libs/」にコピーし、

[php.ini]------------------------------------
extension_dir = "/test/nucleus/libs/"
[sqlite]
extension="SQLite.so"
-----------------------------------------------

として /test/ に置いてみました。この方法で合ってるよとどこかに
書いてあったわけでもないですが…(汗
ちなみに公式サイトではSQlite.soファイルを見つけることができませんでした。
(MTユーザさんが配布しているものがありました)

たぶん、PHP5だとSQLiteが選べると面白いんじゃないかという話かと
思うのですが、DBサーバが重いロリポップでも使えると恩恵ありそうです。
可能性がありそうなら、もう少し試行錯誤してみます。

オフライン

#54 2006-04-02 21:28:46

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

mekyo さんの発言:

原因がわかりました。 関数の仕様が違うから 無限ループしているようです。
   :もう行が残っていない場合は、FALSE を返します。
http://jp.php.net/manual/ja/function.mysql-fetch-object.php

nucleus/sqlite/sqlite.php
630:    foreach ($ret as $key=>$value) $o->$key=$value;]
--->
630:      {     foreach ($ret as $key=>$value) $o->$key=$value; }
  else { return false; }

どうもありがとうございます。次のダウンロードバージョンに反映させておきます。

オフライン

#55 2006-04-02 23:22:29

mekyo
メンバー
登録日: 2005-11-22
投稿: 80

Re: SQLite版Nucleus3.3 βバージョン

yama.kyms さんの発言:

ちなみに公式サイトではSQlite.soファイルを見つけることができませんでした。

上のphpの公式サイトのリンクに
注意:のとこにリンク載っていたのですけど
英語だから気がつかなかったかな?
  → http://sqlite.org/download.html

2.x系と3.x系の ファイルがあるので
どちらにするかは よく考えてからがいいと思います。

A precompiled shared-library for Linux.
と書いてある物をダウンロードします。

私は 2.x系使っています。


肝心の ろりぽですが
仕様をみてきました。
Redhat Linuxのようなので 公式サイトのものがそのまま使えると思います。

置く場所は、 どこでもいいのですけど
nuleusフォルダにおくよりは、
phpのsoだけの他の場所などに統一したほうがいいと思います。
・他のphpで使いたいときに容量を無駄にしない
・nucleusフォルダまとめて入れ替えなどするときに いっしょに後消去防止
・php拡張を どこにおいたか管理がしやすい
など利点があります。

オフライン

#56 2006-04-03 08:35:04

yama
Administrator
登録日: 2005-07-07
投稿: 1,269
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

なるほどsqliteそのものの公式サイトがあると…orz

extension_dir = "/home/sites/lolipop.jp/users/lolipop.jp-dpxxxxx/web/phplib/"
extension=sqlite.so

上記のようにphp.iniを書いてドキュメントルートにアスキー転送し、
sqlite.soは/phplibディレクトリにバイナリ転送しました。
結果。同じエラーが表示されました。

http://as-is.net/blog/archives/000904.html
http://www.dolphy.gr.jp/webap/env/sqlite-install.html
上記サイトあたりを参考にしました。

残念ながらロリポップでは使えなさそうでしょうか。
以上、報告でした。

オフライン

#57 2006-04-03 13:10:48

mekyo
メンバー
登録日: 2005-11-22
投稿: 80

Re: SQLite版Nucleus3.3 βバージョン

sqlite版 動作報告:さくら php4 + sqlite.so 動作可能
php4では、修正あり。なし どちらもsqlite版インストールできました。

方法:自分でsqlite.soをmakeする。
本家のソースでなくて、http://pecl.php.net/package/SQLiteの
http://pecl.php.net/package/SQLiteでソースをひろう。 :oops:

pear install SQLite-1.0.3.tgz
だと/usrフォルダに書き込みをかけて拒否されてやり方がわからないので
面倒ですが、とりあえず、 こうすると makeできます
telnetなどでssh接続します。

wget http://pecl.php.net/get/SQLite-1.0.3.tgz
tar zxvf SQLite-1.0.3.tgz
rm  SQLite-1.0.3.tgz
cd SQLite-1.0.3
phpize
./configure
make
cp modules/sqlite.o /コピー先
cd ..
rm -r -f SQLite-1.0.3

オフライン

#58 2006-04-06 00:49:05

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

バージョン 0.6 をアップしました。

バージョン 0.5.x からのアップグレードの際は、Nucleus コアファイルの入れ替えは必要有りませんので、SQLite ラッパーのみの分を上書きしてください。ただしこの場合は、アップグレードスクリプトの実行が必要です。まず、extra/sqlite/ フォルダにある upgrade.php をルートディレクトリ(config.php の有るところ)に移動してください。Nucleus に管理者としてログインしてデータベースのバックアップを取った後に、ブラウザで upgrade.php を開いてください。これで、nucleus_plugin_option テーブルの構造が変更されます(下記参照)。もし、Nucleus のインストールをやり直す時は、extra/sqlite/ フォルダの readme-ja.txt の記載に従って install.sql を一行だけ書き換えるか、install.sql だけはコアを含むバージョンの物からコピーすればよいです。

以前のバージョンとの大きな違いは、MySQL 版と SQLite 版で、データベースのデータの相互変換ができるようになった点です。つまり、今まで MySQL 版で使用していたブログのデータをそのまま SQLite 版に持ってくることが可能ですし、逆に SQLite 版から MySQL 版に戻ることも容易です。

データベースの復元は、以前のバージョンでは別スクリプト(restoredbsqlite.php)を用いていましたが、今回のバージョンから、Nucleus 管理画面の『DB保存/復元』でこれが行えるようになりました。それに伴い、Nucleus コアの backup.php が若干変更になっています。ブログの表示などに関しては、影響のない部分ですが。

もう一つの変更点は Nucleus インストールの際の install.sql ファイルに関してで、nucleus_plugin_option テーブルの構造を少しだけいじりました。オリジナルのテーブルの構造では、SQLite では実現できないだろうと思われる機能が盛り込まれていたためです。ただ、その機能は Nucleus では使用していないようなので、SQLite で使えるようにテーブル構造を変更しました。変更によるブログ表示の不都合などは無いはずです。

オフライン

#59 2006-04-06 01:09:53

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

こちらの記事で取り上げた問題は結局、テーブル作成時に『NOT NULL』指定であるにもかかわらず『DEFAULT』が無い時に、自動的に『DEFAULT='0'』もしくは『DEFAULT=''』を追加するように翻訳させることで解決しました。

もう一つ。この記事の後半部分で述べた問題に関して、自動的に修正できる仕組みを盛り込んであります。この仕組みを利用するには、nucleus/sqlite フォルダにある sqliteconfig.php を編集して、オプション設定の変更をします。『$SQLITECONF['DEBUGMODE']=true;』の様に指定してやれば、自動修正を行うようになります。ただし、この自動修正機能をオンにすると若干速度が落ちる可能性があるので、デフォルトではオフにしてあります。

オフライン

#60 2006-04-16 20:28:37

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

バージョン0.6.1βをアップしました。おそらく、これが最後のβバージョンになると思います。少し様子をみて不具合が出なければ、細かな調整だけをして(インストール時に『MySQL』と表示されるところを『SQLite』に変更する等)ver 1.0 の配布となります。
MySQL の『SELECT 節と WHERE 節で使用する関数』について、MySQL ver 4.0.x でサポートされる関数についてほぼ全てが使えるようになりました。これに伴い、90%以上のプラグインが問題なく使えるようになっていると思います。
次期配布の ver 1.0 は、このフォーラムではどのカテゴリーにアップすればよいでしょうか?

オフライン

#61 2006-07-17 20:10:31

yu
メンバー
From: 神奈川
登録日: 2003-11-15
投稿: 718
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

遅ればせながらSQLite版、試してみました。

installsqlite.phpを実行して、その他ちょこっと書き換えて、というところに
気づかなかったので、最初は失敗しましたが・・・

・3.22ja本体のファイルを配置
・そこに、SQLite版の0.531b、0.61bのファイルをそれぞれ上書き
(ひょっとして0.531bは必要なかった?)
・installsqlite.phpを実行
・extra/sqlite内のreadme-ja.txtの記述をもとにファイル修正
・install.phpを実行

これで無事インストールできました。
まだ基本的な状態でしか試してませんが、遜色ないですね!
すばらしいです big_smile

※追記
対応コアファイルが2番目の記事にあるのを見逃してました orz

動作環境
WinXP with XAMPP 1.5.3a (PHP 5.1.4, SQLite 2.8.17)

ローカル環境で動かしてるメモ用ブログ、実験がてらSQLite版に移行してしまおうかなあ。


Nucleusだとか
http://nucleus.datoka.jp/

オフライン

#62 2006-08-05 12:41:58

mekyo
メンバー
登録日: 2005-11-22
投稿: 80

Re: SQLite版Nucleus3.3 βバージョン

最新バージョンをみていないので
もし修正済みでしたらごめんなさい。

■不具合バージョン: ver 0.6.1b

■現象
・/nucleus/index.php?action=blogsettings&blogid=1
プラグインのオプションが表示されない。

■再現できる場所
・nucleus\libs\ADMIN.php
function _insertPluginOptions
line: 5666 にて名前構造が違うため値の取得に失敗。

・nucleus\libs\ADMIN.php
while直後の
5660に print_r ($o);を置くことで、標準のものと値の違いを比較可能です。

■原因
mysqlは、列名のみ で返すみたいですが
nucleus_mysql_fetch_objectが
要求された table名.列名 で返すのが原因?

nucleus\sqlite\sqlite.php の
function nucleus_mysql_fetch_object
で テーブル名がついていたら切り取る修正が必要?
          $key = explode('.', $key);
          $key = $key[count($key)-1];
で応急処置しました。

列名など""でくくって作成したとか、列名に.いれたとか
そういう稀少ケースは面倒なので確認していません(>_<)

●別件ですが
INSERT IGNORE
UPDATE IGNORE
UPDATE 内で limit
を使っていた場合もエラー吐くようです


mysql
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]


sqlite
UPDATE [ OR conflict-algorithm ] [database-name .] table-name
SET assignment [, assignment]*
[WHERE expr]
assignment ::=     column-name = expr


▲要望ですが
SQLiteManagerでぽちっと やればいいのですけど
ぽちっと最適化
VACUUM
を実行できるようなボタンかプラグインがあればうれしいです・・・

オフライン

#63 2006-09-09 06:14:21

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

yu さん、mekyo さん、どうもありがとうございます。

デバッグを再開しました。NP_TrackBack のインストール時におけるテーブル作成の不具合ですが、とりあえずエラー表示は出なくなったものの、作成されるテーブルの構造に問題があるようで、見ているところです。もうしばらくお待ちください。

プラグインのオプションが表示されない件については、不具合及びご指摘のとおりの変更での不具合解消を確認しました。""を含む列名にも対処した変更を時期配布バージョンに含めます。

IGNORE に関しては、クエリー文からこの単語を削除するだけでよいように思います。UPDATE/LIMIT の問題は少し難しそうです。よろしければ、どのプラグインでの不具合か教えていただけませんか。

もうすこし、ベータ版の配布が続きそうです…。今のところ、Nucleus 3.23 - SQLite のコアファイルの配布は考えていません。3.22 を register-grobals を off で使用してください。 Nucleus 3.3 配布時かその少し後にSQLite ラッパー ver 1.0 の配布を行えたらなぁと、考えています。

オフライン

#64 2006-09-13 08:11:23

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

バージョン 0.64b をアップしました。

ご指摘にしたがって、バグフィックスを行いました。TrackBack プラグインでは、エラーは出なくなりましたが、私自身がこのプラグインの動作をあまり理解していないこともあって、うまく動いているのかどうかわかりません…。試していただければ幸いです。0.61b からのアップグレードは、SQLite ラッパーの上書きだけでOKです。

オフライン

#65 2006-09-15 20:32:14

yu
メンバー
From: 神奈川
登録日: 2003-11-15
投稿: 718
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

0.64b、かつブログのほうでコメントいただいた、

SQLite-0.64b の 793 行目あたりを

function nucleus_mysql_real_escape_string ($p1,$p2=null){
    return addslashes($p1);
}

(addcslashes -> addslashes へ変更)

この修正を済ませて試したところ、トラックバックも送受信ともOK!でした。
(ローカル環境でMySQL版とSQLite版とで送受信をそれぞれ実行)
実用に一段と近づきましたね smile

追記:
ちなみに最新版のNP_Trackbackは受信データの保留・認証機能がはたらくので
問題なく動いてるのに、うまくいってないと勘違いしやすいかもしれません。


Nucleusだとか
http://nucleus.datoka.jp/

オフライン

#66 2006-09-16 03:38:23

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

yu さんの発言:

この修正を済ませて試したところ、トラックバックも送受信ともOK!でした。
(ローカル環境でMySQL版とSQLite版とで送受信をそれぞれ実行)

うまくいって、良かったです。トラックバックプラグインもOKなら、ブログツールとして最低限のことは問題なくできるということなので、そろそろベータ版から正規版への移行の時期かなと感じています。

次期配布の ver 0.7x では、Nucleus 3.3 にも対応できています。Nucleus 3.3 の配布にあわせて Nucleus-SQLiteの正規版の配布ができそうに思います。

オフライン

#67 2006-09-20 06:16:25

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

ver 0.7.1 β をアップしました。Nucleus 3.3 β 対応です。3.3 で試用する場合は、extra/sqlite/readme-jp.txt を参考に、コアファイルの書き換えを行ってください。

NP_SQLite で、VACUUM および、integrity_check を実行できるようにしました。

P.S.
PostgreSQL への対応も、検討中です。現在のところ、Nucleus のコアについて、インストール・記事の表示・記事/コメントの書き込みができるようになっています。どれくらい需要があるのか分からないですが…。

オフライン

#68 2006-10-24 10:50:08

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

ver 0.77β をアップしました。今度こそこれが最後のベータバージョンだと思います。NP_SQLite プラグインの管理メニューで、いろいろとできるようにしました。
以前のバージョンからのアップグレードは上書きでOKですが、nucleus/plugins/sqlite/index.html を削除してください。でないと、NP_SQLite 管理画面に入れません。
次は、ver 1.0 の正式バージョンを、Nucleus 3.23 sp3 に付加して配布予定です。

オフライン

#69 2006-11-27 18:54:06

ito-yu
メンバー
From: 京都
登録日: 2006-11-27
投稿: 2
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

はじめまして、伊東と申します。
SQLite対応のCMSが増えるのはうれしいことです。
ところで http://japan.nucleuscms.org/wiki/plugin ... :readmedev において
> SQLiteでは、例えば『SELECT i.itime, ....』の様に記述した場合に『itime』が fetch されません。
> これは、『SELECT i.itime as itime, ....』の様に変更する必要があります。
という記述がありますが、これはSQLiteのPRAGMAで制御できます。
PRAGMA short_column_names=1;
これも取り込んで頂けると幸いです。よろしくお願い致します。
#すでに取り込まれていましたら、スミマセン

オフライン

#70 2006-11-28 03:34:04

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

ito-yu さんの発言:

> SQLiteでは、例えば『SELECT i.itime, ....』の様に記述した場合に『itime』が fetch されません。
> これは、『SELECT i.itime as itime, ....』の様に変更する必要があります。
という記述がありますが、これはSQLiteのPRAGMAで制御できます。
PRAGMA short_column_names=1;

知りませんでした。どうもありがとうございます!

実はこの件を制御するのに、SQL クエリーを翻訳して対処していました。現在リリースしているバージョンではこの翻訳(『i.itime』→『i.itime as itime』)が有効ですので、実用上は差し支えありません。ただ、おっしゃるような記述で大丈夫なのであれば、速度の向上が見込めます。次期バージョンに取り入れたいと思います。

あと、一つ質問でこれは次期バージョンに入れたい機能と関連するのですが、同じように簡単な記述で、SQLクエリーを一行だけに制限することが出来ますでしょうか?つまり、SQLite だと『;』で区切って二つ以上のクエリーを一回のsqlite_query()関数で処理できますが、これが出来ないようにしたいのです。

オフライン

#71 2006-11-28 10:34:24

ito-yu
メンバー
From: 京都
登録日: 2006-11-27
投稿: 2
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

検討、ありがとうございます。
ちなみに、SQLiteのchangelogを確認したところ
http://www.hwaci.com/sw/sqlite/changes.html
このプラグマはバージョン2.3.1からの採用のようです。
(逆の作用をするfull_column_namesプラグマの記述があります)
かなり古いので、おそらくバージョンチェックは不要でしょうね wink

同じように簡単な記述で、SQLクエリーを一行だけに制限することが出来ますでしょうか?

現行バージョンでは他にも各種プラグマがありますが
http://www.hwaci.com/sw/sqlite/pragma.html
おっしゃられるような、複数クエリを制限するようなものは見あたらないですね。
お力になれず、申し訳ありません、、 :cry:

オフライン

#72 2007-02-10 11:08:48

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

Nucleus 3.3 β2に SQLite ラッパを付加したものをアップしました(1番目の記事を参照してください)。オリジナルと同様、ベータ版であって、正式バージョンではありません。

SQLite ラッパのバージョンは、0.80 です。従って、上で議論した『PRAGMA short_column_names』と、クエリを一行だけに限定するルーチンはまだ入っていません。3.3 の正式版が出るまでにはこれらのルーチンを入れるつもりです。

オフライン

#73 2007-06-24 08:04:39

Katsumi
メンバー
From: CA
登録日: 2005-06-24
投稿: 637
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

NP_MultipleCategories の新規インストールでエラーが出るとの報告を受けました。これに対処するには、nucleus/sqlite/sqlite.php の608行目付近(_sqlite_divideByChar()関数の、36行目付近)を、

   } else {
      $buff.=substr($query,0,$i+1);
      $query=substr($query,$i+1);
      if (!strlen(trim($query))) $ret[]=$buff;// last column
   }

のように変更(1行追加)して試してください。なお、このエラーはSQLテーブルの構造を変更する際に出るものなので、他のプラグインでの同様のエラーも、これで回避できる可能性があります。

オフライン

#74 2007-12-02 12:09:51

yama
Administrator
登録日: 2005-07-07
投稿: 1,269
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

さくらインターネットで使えることを確認しました。

/usr/local/lib/php/20020429/sqlite.so

上記パスにsqlite.soがあることにたまたま気付いたので、php.iniに以下のように記述。

extension_dir = "/usr/local/lib/php/20020429/"
extension = "sqlite.so"

たったこれだけ。あとは普通にinstall.phpにアクセスしてインストール。

オフライン

#75 2007-12-09 12:35:41

yama
Administrator
登録日: 2005-07-07
投稿: 1,269
ウェブサイト

Re: SQLite版Nucleus3.3 βバージョン

sqlite3が利用できるxreaでも試してみました。

NP_znItemFieldEXの利用で問題発生。NP_znItemFieldEXをインストールして、さっそく拡張フィールドをひとつ作ろうとすると、

Warning: sqlite_query() [function.sqlite-query]: near "'f__role'": syntax error in /virtual/********/public_html/nucleus/sqlite/sqlite.php on line 510
Warning from SQLite-MySQL wrapper: SQL error
in /virtual/********/public_html/nucleus/plugins/znitemfieldex/index.php on line 709

SQL logic error or missing database
ALTER TABLE yamatest2nucleus_plug_znitemfieldex_table_item_b3 ADD `f__role` INT(11) NOT NULL

ALTER TABLE yamatest2nucleus_plug_znitemfieldex_table_item_b3 ADD 'f__role' INT(11) NOT NULL

このようにエラーが出力されます。yamatest2nucleus_という妙なテーブルプリフィックスを
付けているのは関係ないでしょうか。他は特に変わったことはしてないです。
とりあえず今回は実験目的なので、これにて確認終了。以上、報告です。

オフライン

Board footer