1 :
名無しさん@お腹いっぱい。 :
03/06/30 16:01 ID:3hdiLYQO
>>2 またお前かよ、なんなんだよ「2」ってのは、何か楽しいのか?お前さぁ、みんなが楽しく話してるところに近付いただけでススーっと目を合わさずに去られたって事ってないか?
なに? いつだってそうなのか?まぁ、そうだろうな。一般社会ではお前みたいにキモいヤツは相手にしたくないんだよお前はネットの中でも「おマメ」みたいなもんだからな
引きこもった挙げ句、朝からネットにかじりついてスレが立つのを一日中待ち、すかさず「2」と書き込む。 つまんねえ人生だな
みんなが書き込む掲示板に「2」って書き込んだことで自分も社会に参加してるつもりになってんだろ
それにしてもさぁ、もう少し考えろよなんとか社会復帰しようと一晩中考えて出来たギャグが「2」かよ!!
おまえさぁ、一度外に出て人が話してるところでいきなり「2!」って言ってみろよ!もうダメなんだよ、無理なんだよ、お前には
ネット社会ですらコミュニケーションとれてないじゃんわからないだろうけどさぁ
みんな苦虫を噛み潰すような目でお前の自信作の「2」を見てるんだよそう、もう終わりにしようよ、この先楽しい事なんかないんだよ、きっと。
誰か使ってる人いませんか?
4 :
nobodyさん :03/07/01 18:36 ID:KD9GbSVt
PHP5でデフォルトでバンドルになったはいいけど、 Windows + Apache + MySQL + phpMyAdmin 環境で ずっとテストやってたからとりあえずどうしていいかわかんないや。 PEAR DBはまだサポートしてないんですよね? んでもってphpMyAdminみたいなツールはSQLiteにはあるのかなあ。 まあPHP5デフォルトバンドルになる以上、 今後お付き合いしていくのは間違いないだろうと思われるので期待あげ。 詳しい方解説きぼん。
>んでもってphpMyAdminみたいなツールはSQLiteにはあるのかなあ。 ない。全部コマンドラインで頑張るのが漢のロマン。 ツール欲しかったらそれこそMySQLでやればいい、的なものだからねえ…。
あぼーん
∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ
あぼーん
9 :
山崎 渉 :03/08/15 22:12 ID:???
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
10 :
山崎 渉 :03/08/15 22:36 ID:???
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
11 :
NAME IS NULL :03/10/19 03:06 ID:fcozYorT
PEARのsqlite試し中 期待age
あぼーん
13 :
NAME IS NULL :03/10/23 21:14 ID:w0drDQcj
NUT NULLって書いたのにテーブルできてる・・・ スキーマダンプしてもNUT NULL・・・ ていうか誰も使ってないのかよぅ
情報少なすぎです。
15 :
NAME IS NULL :03/10/29 22:13 ID:i9iRWIvB
>>14 少ないからこそ話し合おうやないかと。
とりあえずはオフィシャルのマニュアルでなんとかいける。
PHPでPEAR DBインターフェイスで使ってます。
コマンドラインからCSVから一括インポートできないのが今面倒。
それくらい自分で作れってわかってはいるけど。
あと、完全なカラム名入りのINSERT文でダンプできないのも面倒。
delphiのラッパーでやろうと思ってるんだけど、、、
18 :
NAME IS NULL :03/11/15 19:28 ID:pb0zFJJB
sqliteのワイド文字対応版ってない?
19 :
NAME IS NULL :03/11/26 09:28 ID:hrsdO7GB
20 :
NAME IS NULL :03/11/29 15:59 ID:BZztAbw6
>>20 情報ありがとう。でも、
> まずはSQLite用のODBCドライバをインストールして
> データソースネームを登録して
これが面倒(と感じる人もいるよね)。
PHPで使おうと思ってるんですが、日本語(EUC)は通りますか?
23 :
20 :03/12/01 09:34 ID:O/R85Nmb
ODBCドライバのインストールは一度やっとけばいいやと思うけれども、 データソースネームの登録をデータベースごとにいちいちやるのは 本当にうっとうしい操作で嫌いです。 でも今の所こうするしかないようで・・・いい手あったら教えて下さい。 JScriptやVBScriptなどからSQLiteやJetを使うときは 、 DSNなしでドライバ名とファイル名を直接指定する接続の方を 使っちゃうんですが、この手はどこでも通用するわけではないようで。
API経由で作れるんだから、必要なときにその場でスクリプトから 作ってしまうのはどうか
25 :
名無しさん@Linuxザウルス :03/12/01 19:55 ID:fM+FlLdE
コンパクトなので組込用途にも使えそうでつ。
26 :
23 :03/12/02 09:12 ID:UGNuLnLW
>>24 データソースネームの登録をスクリプトからしてしまうということでしょか。
できるかも。方法を調べてみます。
27 :
23 :03/12/02 10:31 ID:/D3psl+q
28 :
23 :03/12/02 11:00 ID:/D3psl+q
29 :
NAME IS NULL :03/12/05 14:41 ID:zpfAzYND
100行ほどのデータを SQLiteとMySQLにつっこんで、 それぞれ一万回selectしてみたけど、 MySQLの方が速かった… ↓一万回selectにかかった時間 SQLite MySQL 2.0537250042 1.35091304779 1.91771602631 1.58153700829 2.04412007332 1.39080893993 1.93604099751 1.38392806053 1.98756504059 1.34185707569
ああ、INSERTと読み間違えた。 ごめんなさい。
32 :
NAME IS NULL :03/12/06 07:47 ID:Y3cvNAdD
データ投入のスピードはどうよ、おねーさん
sqlite_create_function() や sqlite_create_aggregate() って どんなことに使ってる?
>>29 SQLiteの設定値は?
速度あげるためにチューニングした?
MySQL使わない?としてSQLiteを使うのだろうか? PHPにSQLiteが搭載されてもPostgreを使うのではと思う俺。 いやいやMySQLが擦り寄ってくるのでは?と期待する俺。 正直なところSQLiteはどうだい?
37 :
いなむらきよし :03/12/09 13:39 ID:90H4pzxx
キケー!
とあるオンラインソフトを作ってるんですが、 データ量が多くなってきたのでデータベースを導入しようと思っていた矢先に SQLite を見つけました。 ソースコードから全部結合させて SQLite を内包させちゃいます。 (これが組み込みってやつですよね?) これから追っていくつもりなのでよろしくです。 ちなみに DB は初心者です。
39 :
38 :03/12/12 23:07 ID:fEBGkoUY
オンラインソフトってのは、Windows 用のフリーソフトとか シェアウェアとかです。 既存のソフトのデータベースを SQLite のデータベースに変換する プログラムを書いたんですが、以外と遅いですね。
>>39 そゆ書き方をすると「SQLiteって遅いのか」というイメージだけが広がって
「遅いからクソ」とか自分は知りもしないのにけなす奴が増えていく悪寒
41 :
38 :03/12/13 20:07 ID:???
>>40 ごめんなさい。私がまさにそういうイメージを植え付けられて試していたフシがあります。
で、TRANSACTION 化(って言うのかな?)すると十分に実用的な速度になりました。
だいたい10万件くらいのデータを変換したんですが、所要時間のほとんどが
SQL 文を作る処理で、SQLite の速度はめちゃ速かったです。
フリーソフトとかに組み込むような用途では SQLite 以外の
選択肢は考えられないように思います。速いし。
>>40 そゆ書き方をすると「SQLiteって遅いのか」というイメージだけが広がって
「遅いからクソ」とか自分は知りもしないのにけなす奴が増えていく悪寒
>>41 比較などの詳細をキボンヌ。
43 :
38 :03/12/18 01:01 ID:???
WEB+DB PRESS Vol.18 pp.86-94
45 :
NAME IS NULL :04/01/02 14:56 ID:cP+5Z7n4
46 :
NAME IS NULL :04/01/02 17:19 ID:GTnsxWCQ
データ型のないSQLiteで、型の宣言をしています? (1) 無意味だからやらない。 (2) 目印になるからやる。 (3) しないよりした方がいいと言う人がいるからやる。 (4) するとやっかいな結果になるからやらない。 など、考えていますが、どれが適当かはわかりません。 Date型を付けてしまって、後悔したことがあります。 読むときにアプリのDateTime型が例外を出してきたり... 単なる目印のつもりはまずいことがある。ということはメリットは? Integerも要注意みたい。
>>46 > Date型を付けてしまって、後悔したことがあります。
> 読むときにアプリのDateTime型が例外を出してきたり...
具体的にどんなことになったの?
48 :
NAME IS NULL :04/01/05 11:44 ID:gQ8zMdLQ
NULLの扱いがよくわからん!
49 :
46 :04/01/06 10:49 ID:Pt3TSpWu
>>47 ADO.NETのDataSetに型の指定をしないデフォルトの読み込みをすると、
Date型をSQLiteで指定してあるときは、それをスキーマから読み取るようで、
.NETのDateTime型を使ったDataSetができて、データが"2004/01/02"という
形式でないと読み込みのエラーを起こすのが原因らしいです。
こういうことはADOのRecortSetでも起きるのかも。上にのってるSQLiteExplorer
でやってみるとわかる。Date型に"2004-01-02"なんていうデータでは、SQLでの
Insertはできても、読むときにはエラーになる。Integer型に"3.14"のデータでも
Double型に"テスト"でも、SQLiteは受け付けるけれど、
SQLiteExplorerは読み取り表示ができない。といったことです。
読むときの型を指定すればいいと思うかもしれないけど、SQLite専用に何でも
Stringで読む指定は何とかできるかもしれないけど、一般的には
もう汎用性がなくなって、用途によっては困ると思います。
>>49 SQLite以前に型チャックちゃんとしようぜ。
Double型に文字列を投入しちゃうようなプログラムはダメだ。
51 :
46 :04/01/07 09:06 ID:UJmgjzrz
>>50 けっきょく、そういうことです。
型のないSQLiteに型チェックなんかないし、
型をつければ、それをスキーマから読んであてにしようとするプログラムは
あるんだから。いっそ型を付けない方が正しい。型はないんだから。
>SQLite以前に型チャックちゃんとしようぜ。
>>51 型はつけなよ。他のDBからテーブルをインポートしたり
エクスポートしたりするときそのまま持ってけるから便利じゃん。
君の場合は使ったADO.NETのラッパー?が型のチェックを
ちゃんとしてないだけじゃろ。
>>49 Date型のカラムに '2004-01-02' という値が紛れ込んでてエラーになったという話ですか
どうしてそんなことに?
入力の際にそれをはねなかったのが問題だと思う
54 :
46 :04/01/08 11:00 ID:lOX/MR5Z
>>52 型はつけない方がむしろ正統と結論にしたのは、
型をつけて利用することの方が裏技に近いものと思った、ということです。
うまく使えば便利かも。
ADOやADO.NETがデータベースに付けられた型を見たあとそれをどう料理するかは、
もっと調べてみる。
>>53 元はMySQLのデータベースに入れてたデータなんです。
MySQLは Date型の書式に ISO準拠の国際標準書式"yyyy-mm-dd"を採用していて、これ以外ははねられる。
だからこれをSQLiteにそのままインポートしても全部 '2004-01-02'の書式。日付は例でした。
変換してからインポートが正しい? ISO書式じゃだめ?
どうせSQLiteは Date型にすれば日付計算がサポートされるなんてわけないから、
Date型を付けなけりゃうまくいったのに、との後悔だったんだけど・・・
55 :
46 :04/01/08 14:50 ID:wdL+QGFi
>>52 ラッパーの件がありました。たぶん、そこの問題じゃないです。
ADO.NETでも高級な DataSetでの例だったんです。
低級で高速な DataReaderでは、明示しなけりゃDateTime型にデータを投入しませんから、
もともと問題なしです。
56 :
46 :04/01/08 17:41 ID:7mJL8ouu
型チェックのことに話は膨らんじゃってごめんなさい。 言葉たらずでしたが、"2004-01-02"のデータはミス入力のつもりではなかったんです。 元々のこのDate型の話を整理すれば、こんなことです。 次の3つは同時に成り立たない。 (1) 日付の書式に ISO書式"yyyy-mm-dd"を使う。(MySQLと同じにする) (2) SQLiteのデータ型に Dateを付ける。 (3) ADO.NETの DataSetをオートで使う。 だから、最も不要なものをやめるとすると(2)を選ぽうか、ということだったんです。 むろん、がんばれば、他にも手はあるにしても。 「Integer型に"3.14"のデータでも、Double型に"テスト"でも、SQLiteは受け付けるけれど」 が誤解の元でした。失礼しました。
まあこれでも読め。 ** NOTES: ** ** SQLite processes all times and dates as Julian Day numbers. The ** dates and times are stored as the number of days since noon ** in Greenwich on November 24, 4714 B.C. according to the Gregorian ** calendar system. ** ** 1970-01-01 00:00:00 is JD 2440587.5 ** 2000-01-01 00:00:00 is JD 2451544.5 ** ** This implemention requires years to be expressed as a 4-digit number ** which means that only dates between 0000-01-01 and 9999-12-31 can ** be represented, even though julian day numbers allow a much wider ** range of dates. ** ** The Gregorian calendar system is used for all dates and times, ** even those that predate the Gregorian calendar. Historians usually ** use the Julian calendar for dates prior to 1582-10-15 and for some ** dates afterwards, depending on locale. Beware of this difference.
ついでにこれも読めや。 /* ** Parse dates of the form ** ** YYYY-MM-DD HH:MM:SS.FFF ** YYYY-MM-DD HH:MM:SS ** YYYY-MM-DD HH:MM ** YYYY-MM-DD ** ** Write the result into the DateTime structure and return 0 ** on success and 1 if the input string is not a well-formed ** date. */ static int parseYyyyMmDd(const char *zDate, DateTime *p){ int Y, M, D; Y = getDigits(zDate, 4); if( Y<0 || zDate[4]!='-' ) return 1; zDate += 5; M = getDigits(zDate, 2); if( M<=0 || M>12 || zDate[2]!='-' ) return 1; zDate += 3; D = getDigits(zDate, 2); if( D<=0 || D>31 ) return 1; zDate += 2; while( isspace(*zDate) ){ zDate++; } if( isdigit(*zDate) ){ if( parseHhMmSs(zDate, p) ) return 1; }else if( *zDate==0 ){ p->validHMS = 0; }else{ return 1; } p->validJD = 0; p->validYMD = 1; p->Y = Y; p->M = M; p->D = D; if( p->validTZ ){ computeJD(p); } return 0; }
59 :
46 :04/01/09 10:57 ID:vDXjRDTC
>>57 >>58 ずばりサポート、ありがとうございました。
訂正: ラッパーが対応していないも正解でした。
やることが山ほどできました。
60 :
NAME IS NULL :04/02/10 22:26 ID:1wsqz1Hs
SQLiteManagerはなかなかいい。 しかし、情報が少ないよね〜 もう少しすればいろいろ情報も出てくるんだろうけど・・・ 標準の関数が少ないのが辛い。
良さそうなDBなのに、話がなかなか進まないね。 まあ、俺も使っていないのだが。 タイプレスのDBっていうのは、 アプリ側のやる仕事が増えそうな印象があって(それが本当かどうかはしらんが)、 それでなかなか触手が伸びないのかな?
62 :
NAME IS NULL :04/02/21 02:04 ID:UE2tYF6F
MySQL なり PostgreSQL なりと同列に考えるような Web のバックエンドとしては アプリ側の仕事が多くて使いにくいんでしょうが,Windows や Mac ネイティブな ソフト用の組み込み DB としてはほかに選択肢がないから sqlite が一番だと思ってます. 自分でゴリゴリと DB 操作コードを書かなくていいのは激しく楽です. JET エンジンとかがほかの選択肢なんでしょうか. 個人的には alter table がないのが厳しい. あと,sqlite 自身ちょくちょくバージョンアップしてるみたいですが, どこがどう変わったか公式サイトをみてもわからないのがつらいです.
>>62 サイトは殺伐としすぎてますよね。
sqlite 自体に必要な機能を備えさせるのは構わないけど、サイトやらドキュメントは
もっと饒舌であってほしい。
64 :
NAME IS NULL :04/02/22 13:34 ID:84o4/Ew4
65 :
NAME IS NULL :04/02/22 21:58 ID:4n+LahDS
66 :
NAME IS NULL :04/02/23 08:23 ID:gJFAyjPD
67 :
NAME IS NULL :04/02/23 09:16 ID:xmVB1NEu
辿れたよ。スマソ(65の代筆)。
sqlite使ってますが、型なしで困るのが日付と時刻。 表示や入力フォーマットの統一も面倒だし、 並べ換えもねえ。 PHPとかかませばいいんだろうが、sqliteそのものをダイレクトに使ってるからねえ。
69 :
NAME IS NULL :04/02/23 16:56 ID:aEcQvCoc
最初は、alter table を使おうとして動かずあせった。 ドキュメント見直したらサポートしてない、とあって、 じゃあどうすりゃいいんだと、またもあせった。 答えは単純なのであった。
このスレには詳しく調べる前に すぐに文句を言っちゃう人が多いですね・・・。
72 :
NAME IS NULL :04/02/24 09:21 ID:tHk27BoL
型なしのsqliteで、ALTER TABLE がどれだけ必要かということがある。 >Integer型に"3.14"のデータでも、Double型に"テスト"でも、SQLiteは受け付ける という便利な仕様だから ALTER TABLE にほとんど実質的な意味がない。 columnが足りなくなる方に、とっておきの Tips CREATE TABLE ex1(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z); ご希望ならaaからzzも追加サポート。
ワラッタ Excel の表みたいだな。
74 :
62 :04/02/25 18:20 ID:UqpphvZs
パフォーマンスはあまり気にならないのでは 1回だけだし
ちょっとは自動化できるスクリプトかバッチファイルでも作ってみるかな。
77 :
NAME IS NULL :04/02/26 00:12 ID:1lxCODMs
PHPと連携して、管理システムを構築した。 プロセスが起動しないっていうのがいいよ。 サーバーがないような小規模だと、クライアントで 数MBでもメモリー食うのが辛いから。 PHP5が普及すれば、レンタルサーバーでDBを付ける必要もないから 利用価値は大いにあるだろうね。 後はプロシージャさえ組めれば・・・・・
サービスとして起動しておく必要がないのに、とても高速で使えるよね。 これだけコンパクトだと、組み込み用途で重宝というのもよくわかる。やったことないけど。 PHP5で知名度が上がれば「SQLite本」出るかな。
>>74 もうすこし効率のいい方法があったような気がしたけど
やりかた忘れた・・・
80 :
NAME IS NULL :04/03/01 01:16 ID:v+M0GB6E
ハマったのでmemo。
PHPでMySQLのデータをSQLiteにインポートしたんだけど
INSERTするときにaddslashesでエスケープしても
正しくINSERTできない時があります。
そんなときはsqlite_escape_stringつかいましょう。
alter tableないんですね・・
SQLiteManagerで作ってたから知らなかった。
ttp://www.rakuto.net/study/htdocs/sqlite/manip.html 上記の例だと一旦メモリ上に元テーブルに行を追加した仮テーブルを作って
元テーブルからデータを拾ってきたあとDROP&CREATEしてますね。
>80 この場合は「行を追加」ではなく「列を追加」でしょうね。 行を追加するInsertのサンプルに上がっているけどね。よく見つけたな。
82 :
NAME IS NULL :04/03/01 10:45 ID:LObuw1/6
結局、新しいテーブルを作ることは簡単だが、元のデータを移そうと思うと、 同じ名前の別テーブルに、名前の衝突を回避しながら入れ替えることは ステップを踏まないと出来ないということだな。
(゚Д゚)ハァ?
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| | ハァハァ禁止! | |________| ∧∧.|| ( ゚д゚)|| / づΦ
(゚д゚)ハーン?
86 :
NAME IS NULL :04/03/04 17:40 ID:3W8zShnU
日本でもフリーなPHPスクリプト配布する人が増えているが
海外に比べるとDB使っている人が非常に少ない。
理由はやはりレンタルサーバが対応している所が少ないからってのがあると思う。
で、それが
>>77-78 の理由で大ブレイクする予感。
88 :
80 :04/03/05 08:16 ID:???
>>81 すんません・・行と列間違える俺って相当DQN。
>>86 PEAR DB使えれば簡単に使えるし。
PHP5がでたら間違いなく流行りますね。
ところで日付型のゼロパディングって皆さんどうやってます?
自分はマメに
//$date = "2004-3-5";
$arr_date = explode("-",$date);
$date = sprintf("%0d-%02d-%02d",$arr_date[0],$arr_date[2],$arr_date[3]);
//型がないってこういう時便利ですよねー
//Cのsprintfではこんなのありえない
ってやってるんですが・・・
もっと便利な方法あります?
PEAR DB内で自動的にできたらいいなぁとか思って
ソースのぞいてみたけど、カラムの型なんかいちいち調べてたら
時間かかりそうだし・・・
89 :
NAME IS NULL :04/03/05 20:03 ID:kZCYuHRE
Sqlite で JDBC接続している人いませんか? 英語のサイトを読みつつ 接続したのですが うまくいきません JAVAでウィンドウズ2000でやっている人いないかな
トリビア SQLiteの作者はTclのハッカーである。
>>89 何がうまくいかんの?
俺もちょっと前にJDBC接続してみたが、普通に使えたぞ。
日本語以外は。
92 :
NAME IS NULL :04/03/12 00:40 ID:RfCZzlsO
>90 15ふ〜ん
94 :
NAME IS NULL :04/03/17 21:15 ID:InsPnmlY
96 :
NAME IS NULL :04/03/18 06:01 ID:tomkhCwI
97 :
NAME IS NULL :04/03/18 06:31 ID:jR84uLHZ
a
98 :
80 :04/03/18 08:08 ID:???
>>96 SQLiteがきたからMySQLが戻ってきても・・・
ストアドとかテクニカルな事がしたかったらポスグレ使うし
規模がデカくなったらOracle使うし・・・
SQLiteManagerいつのまにか日本語化されてますね。
自分で日本語化ファイル作ってつかってますた。
99 :
NAME IS NULL :04/03/18 21:45 ID:Us3+nbT1
>>96 ほんまや。必死だな藁
つーかSQLiteが当て馬になってんのかなあ。
それはちょっと政治的で嫌だなあ。
まあ俺はWebプログラマじゃないからPHP使わないけど・・・
100 :
NAME IS NULL :04/04/14 10:02 ID:+XCDs49F
101 :
NAME IS NULL :04/04/17 21:04 ID:PagAZNLN
>>100 なんか気の毒だね。
教えてあげた方がいいかもw
102 :
NAME IS NULL :04/04/17 22:49 ID:x7N6mXCW
>>100 , 101
先日教えてあげました.
すでに訂正が入っていますね.SQLite の方が速かったみたいです.
俺のテストによればトランザクションでまとめてインサート してもデータの数が500万件とかになると、インサートは 遅くなる。多分Bツリーのページ溢れによる再構築か ディスクアクセスに時間がかかってるのだと思う。 どうすれば速くなるのかまだ実験中。
104 :
NAME IS NULL :04/04/18 21:41 ID:hUv2zobH
>>98 >ストアドとかテクニカルな事がしたかったらポスグレ使うし
>規模がデカくなったらOracle使うし・・・
だな。MySQL、もうイラネ
>>103 素朴な疑問なんだが500万件をまとめてインサート
するようなことは頻繁に発生するの?
ていうかデータの絶対量が500万件を超えると
1件の挿入でも遅いってこと?
前者ならあんま気にせんでいいような。
>>104 毎日500万件のテーブルに4000件程度の挿入をまとめてやるんだが
2000件目くらいから極端に遅くなる。CPUをフルに使ってズバズバやって
欲しいのだが、CPUの使用率も下がってしまう。どこにボトルネックがあるのか
いまいち掴みきれてない。
>>105 CPU が下がってるときのディスク I/O は?
>>106 どれくらいの頻度でアクセスしてるのかよくわからない。
アクセスランプ壊れてるんだわ。すまん。
トランザクション中のジャーナルファイルの更新が遅い感じ。
最適化のFAQ読んでたらジャーナルファイルをOFFにできる
みたいなんでそれやってみるわ。
108 :
NAME IS NULL :04/04/19 23:51 ID:ZwzacxDL
>>105 なるほど。
オイラは「500万件という(ある意味小規模とは言いにくい?)
量のアクセスで遅くなるなら、素直にあきらめて別のものを使うのが
SQLiteにとって吉」という意見なのだが…どうかね?
SQLiteはシンプルでコンパクトであり続けて欲しい。
…1000アクセス/1日未満のサイトとか、ちょっとしたアプリで
バークレーDBよりもうちっと構造化されたDBが欲しいという場合に
フリーで使えるメジャーなDBライブラリになって欲しいのよね。
getopt的プログラマの共通言語「ああ、アレね」みたいな。
>>107 ん? iostat とかで見れないすか? Windows とかだったらスマソ。
>>108 俺はCとTcl/Tkを好んで使うんでSQLiteにはとても
親近感を持ってるんだよ。使いたいんだ。
>>109 うん。Windows。すまん
>>110 そか、悪かった。
しかし逆説的に
>毎日500万件のテーブルに4000件程度の挿入をまとめてやるんだが
>2000件目くらいから極端に遅くなる。
未満ならなんら問題ないことを実証したヨカン
ところで先日クロスコンパイルに失敗。
見た感じではさくっといきそうな感じだったんだが_| ̄|○
PocketPCで使える?
113 :
NAME IS NULL :04/04/26 02:26 ID:ORUhb82C
>107 sqliteInt.h の # define TEMP_STORE 1 ですね.俺もC/Win 環境で使ってるので続報期待. ところで ver3 の開発が始まったみたいだね. 今のところ BTree に手が加えられてるみたいだけど詳細は不明. 個人的には圧縮関連ルーチンが取り込まれないかと期待.
114 :
NAME IS NULL :04/04/26 11:19 ID:fJzkQNNx
SQLiteManagerを操作中 Tableを間違って消しちゃったみたいなんですが DBの中身を見るとテーブル定義もデータも残ってるみたいなんです。 (でもselect * from sqlite_masterしてもでてこない) これって救出する方法ありますか?
115 :
NAME IS NULL :04/04/26 18:15 ID:gZB0Gfdi
あの、ちょっとMySQLについて教えて頂きたいです、このスレッドでいいですか? 調べてもわかんなくって。。。 バカにされても仕方ない話なんですけど、SQLをバッチファイルで流したいんです。 (create DATABASE ・・・ を直に手で打つんじゃなくて、「test.sql」というバッチファイルで実行したい) Windows環境なんですが、どうやればよいでしょうか? 教えて下さると、とっても嬉しいです。よろしくお願いします。
>>115 mysql <test.sql
つーバッチファイルつくりゃすむだろ
なんでmysqlの質問がここなんだよw
warata
前言撤回。
>…1000アクセス/1日未満のサイトとか、ちょっとしたアプリで
とか言ったが、
http://www.sqlite.org/cvstrac/wiki?p=WhenToUseSqlite を見ると
もちろんサイトがどれだけヘビーにDBを使うかによるが
お堅く評価して100,000 hits/day程度ならまだギリまで行ってなくて
テストではその10倍くらいまで行けたぜ
とあるな。<(_ _)>
あとクロスコンパイルはOKだった。PoketPCてのはわからんが
IntelのLinuxでコンパイルしてPowerPCのLinuxで動いたよ。
自宅サーバをOpenBlockSにでもしてみようかなぁ。静かそうだし
おお、PocketPCってWindowsCEのPDAなのね。 ちょっと説明すると SQLiteってのはDB1個が1個のファイルで、サーバデーモンってのは 特に必要ない。 ソースをコンパイルすると出来上がるのは単純には2個のファイル。 ユーザがCでプログラム組んでアクセスできるための.so (Windowsでは.dll)と、SQLインタプリタの実行ファイル。 まあ、他にもシンボリックリンクとかインクルードファイルもできるけどね。 あと、ファイルを使わずメモリだけで済ますオプションもあるから PDAには「向いてる」かと。 イメージ的にMS Accessの.mdbの利用方法に近いのかな… 商用利用もOKであるのが決定的に違うところか?
121 :
NAME IS NULL :04/04/28 10:08 ID:zZMnOcUG
>>120 Accessのmdbは商用利用ダメなんですか。そうですか。
バックアップって.dumpでsqlファイルとしてとってます?
容量が小さいならファイルまるごとコピーでも良いのではないかと
思っておるのですが。
(というか.dumpはバックアップ用なのか?)
122 :
112 :04/04/28 23:29 ID:???
やっぱりそうですよね。 石の違いを吸収してしまうDBファイル形式。 母艦でOracle等の親DBからデータを切り出したSQLiteのDBファイルを作成。 PDA用のアプリは慣れたSQLを使って作成可能。 os.cを見てみたのですが、PDAは所詮利用者ひとりだけなので移植はそれほど 難しくなさそうな気がするんだけど。もしかしてほとんどそのままコンパイル可能? PocketPCアプリ作ったことがないんでよくわからないので聞いてみたのですが。 PDAで動作すると商業ベースにも乗って意外とそっち方面でも流行るのでは?
Accessのmdbが商用利用不可というのは初耳なんだが
124 :
120 :04/04/29 11:12 ID:???
失礼。ちょっと脳にウィルス入ってた。
>123 たしか accessのライセンスがないとダメだよ。
126 :
NAME IS NULL :04/04/29 21:47 ID:WDx32sxT
>>121 dumpはバックアップ用じゃなくて、他のDB、というか
Postgresqlにデータを移すために使うんだよ。
バックアップは君のいうようにDBファイルを圧縮しとけば
いいと思うよ。差分は取れるのかどうかしらない。
127 :
NAME IS NULL :04/04/30 08:57 ID:y7ZGN/fc
>>125 たぶんライセンスじゃなくて信頼性とかの問題で
商用利用不可なんじゃないかと。
128 :
NAME IS NULL :04/04/30 21:19 ID:VZceiIAf
信頼性というのならsqliteは実績が無いから商用につかうのは どうかと思うけど・・・。なんかsqlite使った有名アプリない? PHPとかは無しで。
調べずにカキコするが sqliteのperlへの実装ってある?
131 :
NAME IS NULL :04/05/01 00:11 ID:FaMfpc9Z
sqliteってシングルユーザなDBみたいですけど ロックってどんなかんじ? なんも考えず select for update でOK?
>>131 トランザクション開いてアクセスする。
(トランザクション閉じるまで他の人は読み込みも蹴られますた。
SQLite擁護派として何かもう一言フォローしたいところだが
漏れも調査中なんでスンマソ)
134 :
NAME IS NULL :04/05/03 23:01 ID:AtGIA8g9
SQLiteに500万件なんてナンセンス!
135 :
NAME IS NULL :04/05/03 23:57 ID:6ET0kvN6
136 :
NAME IS NULL :04/05/04 04:30 ID:EWylYRto
>>135 だって意味なくね?
実験するのは大いにかまわないけど、なんか必死なのが痛い。
文字通り 軽量 のデータベースなんだからさ。
137 :
NAME IS NULL :04/05/06 08:18 ID:YTLAADWx
>>136 言い回しは好きじゃないけど内容的には賛成。
SQLiteは好きだし便利だけど、データ量が多いと
その真価は発揮できないと思う。
(処理速度よりもバックアップとかのメンテの面で。)
俺の場合500万件なんていうたくさんのデータを扱う案件は
今後でてこないと思うのでSQLite使いつづけますが。
10万件程度なら全然問題ないし。
138 :
NAME IS NULL :04/05/06 14:08 ID:kuYQWsdl
Windows向けGUIアプリのファイル形式としての応用に挑戦中。 オブジェクト指向によるプログラミングでよく使われるシリアライズと比べて、 1.ランダムアクセスがスマートにできる 2.ファイルの全てをメモリに読み込む必要が無い 3.ある程度の標準機能(ファイルの最適化とか)を持つ あと、多言語対応に向けたアプリ中のロケール文字列も、 こいつにぶち込んでおけば海外の人が勝手に翻訳してくれるのではないかと期待できるかな。 まあまずは動くところまで作らないとね。 あと、今のところ単純なラッパーを越える使い勝手のC++ライブラリが存在しないんですが、 ACCESS VBAのADODB.Recordsetライクな使いやすいアクセスライブラリってどこかに落ちてませんかね? 板違いならスマソ。
139 :
NAME IS NULL :04/05/06 18:29 ID:YTLAADWx
140 :
138 :04/05/06 19:26 ID:kuYQWsdl
>>139 >なんかすごいこと言いますね。
>ロケール文字列をDBに入れるってすげーありえねー。
これですが、sqliteは文字列の入力チェックをほとんど何もしていないので、
ほとんど「何でも」入ります。
S-JISでもEUCでも区別なく入るようです。
簡単なチェックをしましたが、部分一致などもとりあえず問題無いようです。
なので、アプリ中で用いるWindowsロケールに依存した(要するに各国語)の
文字列リソースを入れる容器としては充分使えそうな気がします。
ライブラリのほうは家に帰って試してみます。ありがとう。
141 :
NAME IS NULL :04/05/06 21:26 ID:S/PbMEEw
>>140 > ほとんど「何でも」入ります。
>>139 はそういう話を言ってるわけじゃないだろう。
143 :
NAME IS NULL :04/05/07 09:40 ID:uvn4YUcn
SQLiteなら、DBとしての利用という範囲で考えずに、
>>138 が言う「ファイル形式としての応用」への挑戦はありえるんじゃない。
XMLより使いやすい場合があるかも。
144 :
NAME IS NULL :04/05/08 06:16 ID:Gf03gDXu
>>143 それはどうでしょう.いきなりファイル形式が変化することもあるんでは?
同様に内部コードが UTF-8 と ANSI の場合でファイル形式変わってしまいませんかね?
(調べてません.すんません)
基本的に非圧縮だし,と思えば亜種で圧縮サポート形式も出てきていて,標準には向かないような.
以上は交換用途としての(.pdfのような)ファイル形式としての話.
アプリのデータ保存用で,ある種独自のファイル形式としてなら,大いに結構.
公式にもその用途を謳っていますしね.でも比較対象はXMLではないと思います.
ロケール文字列はDBに入れないほうがいいと思う。 なぜかというとsqliteのツールが無いとユーザーが 新しく追加できないから。UTF-8のテキスト形式が シンプルでいいと思う。 初期設定の保存とかは便利でいいと思う。
>>137 軽量ってのは、本体のコードのことで
DBのサイズでは無いと思うんだけど
どうなんでしょう
locale文字列..... ADODB.Recordset....... ファイルシステムの代わりに最適........ 上記の話題を見た直後の私の第一印象、 「はぁ........もうダメポ」
>>147 なんか間違えたこと言った?変なこと言ってたら
訂正するから指摘してくれ。
>>148 それほどには奇天烈なことは言ってないと思うがちょっとうなってしまう
部分はある。
ロケール文字列については、
{ 言語, 通し番号 } → 文字列
ができればいいわけだよね。
現状は言語ごとに分かれたファイルから通し番号でとってくる
やり方が主流だと認識してる。
「すでにそのアプリが内部データをSQLiteで持っているので、
ついでに入れてみた」というのりでなら、まぁそれは設計者が
選択したってことでいいかと思うが、
すでに確立した感のある方法(自動生成ツールがあったり、
その解説ドキュメントがあったりして他の開発者が
共通の知識を持っている)をあえて捨てるメリットがあるかは疑問。
新しいやり方にチャレンジする精神は立派。完成させてみて
発見したり実感したりすることもあると思うのでガンガレ
150 :
NAME IS NULL :04/05/09 14:03 ID:6b2QA1ug
>>149 >すでに確立した感のある方法(自動生成ツールがあったり、
>その解説ドキュメントがあったりして他の開発者が
>共通の知識を持っている)をあえて捨てるメリットがあるかは疑問。
ソースキボン
プログラム板のスレタイトル眺めて、多国語対応でググってみたが、
いいサイトが見つからない
>>150 おいらが言ったのは gettext とその周辺ツール。と、その類似品。
えっと、どういうものかつうと
(1)まずCで普通に(英語メッセージで)プログラム組む。
(2)そしたらソースをツールに通す。するとソース内の文字列リテラル
の頭に目印がつく。
(3)同時に、文字列が抜き出された「リソースファイル」ができる。これには
通し番号がつく。
(4)リソースファイルの「日本語版」をつくる。
(5)次回コンパイルする前に、専用のプリプロセッサに通す。
すると、ソースの文字列リテラルの部分が「文字列をリソース
ファイルからとってくる関数」に置き換わる。
(6)プリプロセスされたソースをコンパイル。
というやつ。たまに雑誌で解説記事あったりする。
おいらがこないだまでメンテやってたソフトでもそういう
仕組み(の別物)だった。
ソースイメージ
printf( "this is a message\n" )
↓
printf( "><this is a message\n" )
↓
printf( gethogehoge( lang, 100 ) );
リソースファイル英語
100,this is a message\n
リソースファイル日本語
100,これはメッセージです\n
その昔shi3z氏も似たようなプリプロセッサ
作ってた(たしかそのときの動機は日本語対応してないコンパイラで
SJISの文字をつかえるようにすることだった)。そんでその副作用
というか派生で日本語の変数名が使えるようになっていた気がする。
windowsも似たしくみのはず。
152 :
139 :04/05/10 08:14 ID:Is7LBGNM
>>147 私も最初思ったw
もまえ本当にC++でGUI作ってるのかと。VB極めたあと
MFCでHelloWorldってるだけちゃうんかと。
まー、
>>149 の言うようにそんなにおかしい事を言ってるわけでは
ないわけで・・・
まぁ、
>>138 よ。言いだしっぺなんだからごちゃごちゃ言う前にやってみれ。
ソース晒してくれれば協力するし。
ただ、DBをこういう風に使うのはなんか間違ってると思うが。
リレーション?なにそれ?っていう状況になるわけで。
153 :
NAME IS NULL :04/05/10 10:20 ID:6CmpQPbS
> リレーション?なにそれ?っていう状況になるわけで。
それは、そう思った。
ただ、型なしの仕様が正しいと考える SQLite の面白い所で、
この考えは、リレーションを厳格には考えないという所に行くんじゃないかと
解釈してるけど、どう思う ?
キーさえ、しっかりしていれば、それで出し入れするデータは、
何だってかまわないという事になればリレーションとは違うかな、と。
以下の原文は
http://www.sqlite.org/datatypes.html SQLiteのデータ型
第1節 型なし
SQLiteは「型なし」である。これは、そのカラムに宣言されたデータ型に関わらず、どのテーブルのどんなカラムにも君が望むあらゆる種類のデータを蓄積できる、という意味である。(このルールのただ一つの例外は、次の第2節を見よ。)この動作は仕様であってバグではない。
データベースはデータを蓄積し、復元しなければならないものであって、どんな形式のデータが入るかはデータベースには関係のないことである。
他のほとんどのSQLエンジンに見られ、SQL言語の仕様に定められている強い型システムは、間違った仕様である。この間違いはインターフェースの中に現れる実装の一例である。
SQLiteは、こうした間違った仕様の克服を求める。あらゆる種類のデータをあらゆるカラムに蓄えることを君にまかせ、データ型の定義に柔軟さを認めることによって。
154 :
NAME IS NULL :04/05/10 20:37 ID:6CmpQPbS
156 :
NAME IS NULL :04/05/18 16:19 ID:ZavbGlbD
ODBCドライバはファイルDSNには対応していないのかな? やろうとしたらエラーが出たんだけど。
>>161 カコイイ!でも文字コードがああああああ
逝ってくる。
文字コードがどうかしたの?
Qt 使ってるのか。
167 :
NAME IS NULL :04/05/26 10:49 ID:OP8x6gI1
ほんとだ。Windows版バイナリだと、日本語データ表示は文字化けだあ。 これで入力すると ?? というデータになるしね。Qtは知らないからなあ...
168 :
sage :04/05/26 13:14 ID:YjzGdGIt
外国製でもきっちり日本語処理ができるのって、どういうのかな。 Unicodeを使ってるドットネットのものは、大丈夫なのが多いみたいだけど、 Javaのもいいか ?
169 :
163 :04/05/26 13:19 ID:???
>>167 最初、自分がINSERTしてるデータがEUCだったので表示されないのかと
思って「逝ってくる」ってパピコしたんだけど
その後UTF-8で入れなおしてもダメ。
私もQtなんて知らないです・・orz
170 :
NAME IS NULL :04/05/26 20:21 ID:+wg1Ei5Q
SQLiteCC を日本語化してみた人です. SQLite Database Browser のソースをちらっと見ましたが,SQLite 本体が UTF-8 enable になっていないので UTF-8 は通らないようです. で,SQLite DB Browser の QT が日本語を通すようになっているか調査した人いますか? QT を触ったことありませんが QT 自体は日本語処理OKと聞きました. ちょっといじってみます.
171 :
NAME IS NULL :04/05/27 15:22 ID:R/pbcO4/
ちょっと前の話題の、ロケール文字列をデータベースに入れておくって話。
webで C# のサンプルコードに当たっているうちに、たまたま、それをやっているやつを発見。
http://www.wrox.com/books/0764557599.shtml 「 Professional C#, Third Edition 」という今月出た本のダウンロードコードにある。
第1版の翻訳は持っていて、中身が濃い良い本。新版もほしいな。(翻訳出版してね)
ch17code\Localization\DatabaseResourceReader の中にあるよ。
やっていることは、ロケール文字列などのカルチャ固有のリソースにアクセスする標準のクラス
ResourceManagerクラスを継承して、自前の DatabaseResourceManagerクラスを作ってしまう、
という所がミソ。
普通なら、リソースファイル名か、埋め込みリソース名を指定する所で、
データベースを指定するという以外は、普通と変わらないわけだ。
これ、使えそうだよ。サンプルでは SQL Server を使ってるけど、SQLite 向きだね。
173 :
171 :04/05/28 09:03 ID:+ZceNJch
このライブラリ使って、ロケール文字列を SQLite に入れておくテストしたら、あっさり成功しました。 普通のリソースを使う既存のコードも、1行書き換えるだけ。 あとは SQLiteで create table Messages ([key], [ja-JP], [en-US], [de-DE], [fr-FR]) なんてして、データを入れておけば、勝手にシステムのカルチャに合わせた文字列を表示する。 プログラムからカルチャを変更するような使い方も簡単だな。 標準クラスを継承するクラスの作り方・使い方のお手本みないなもんだ。
174 :
163 :04/05/28 15:10 ID:???
テキストストレージとして使うってのはありなのかな。 メモ帳、日記、掲示板みたいな、付帯属性のあるプログラムのバックエンドとして使いたい。
>>178 そうでつか。今作ってるデータ集計用のアプリが完成したら、PIM ソフトを作ってみようと
思っていたので心強いです。どうもありがとう。
日本語の全文検索あたりが難関かなと思ってます(現在ノー・アイデア)。
>>179 めんどくさいからlike演算で・・・。
181 :
170 :04/06/01 04:17 ID:???
SQLite Database Browser の日本語化をやろうとしましたが,
オリジナルの Windows 版は Qt の製品版を購入して作ったらしいので,
Qt を持っていない私には開発できないことがわかりました.残念.
>>179 SQLite 自身に手を入れてもいいかもしれませんね.
正規表現パッチとか勝手に作っちゃいます?
>179 日本語は全てUTF8に変換してDBに突っ込む。 突っ込む際は、表示用のオリジナルのテキスト(フィールドA)のほか、 ・全角英数記号を半角化 ・半角カナを全角化 ・ひらがなをカタカナ化 ・無駄な空白を取り除く 等の処理を行ったテキストも別フィールドBに突っ込む。 検索の際は同じ処理を行ったUTF8のテキストをフィールドBに対してLIKE演算。 という感じで簡易あいまい検索を実現してま…
183 :
174 :04/06/01 08:21 ID:???
184 :
170 :04/06/01 22:58 ID:???
>>183 私もそのサイト見ましたがだいぶ情報が古いです.Qt-1.41 に対するパッチとかで,
すでに本家では別の方法で国際化"自体"は取り入れられています.
問題は SQLite Database Browser 自身が全く国際化を意識せずに作られている点です.
ちなみに Qt の Windows 用フリー版は 2.x までしかなく,SQLite Database Browser は 3.2, 3.3
で作られています.
>>182 興味深い方法ですね.それって常套手段なんでしょうか?
185 :
182 :04/06/02 00:00 ID:???
>>184 適当に自分で考えただけなんで、常套手段なのかどうかは全然わかりません。
とりあえずこうしておかないとパフォーマンスが悪いと思うんで…
というかまずRDBは全文検索には向かないと思うんですよね。
186 :
157 :04/06/19 07:51 ID:???
ver 3.0 alpha 来ましたね UTF-16使えるようになったのかな
SQLite のサイト、いつのまにあんなデザインになってたんですか?
>>187 私も気づかなかったー。
グラフィカル。でもやっぱりシンプル。良い。
VB6で3を使う方法が書いてあるページ探し中・・・・・・・ だれか
>>190 ODBCを使うと配布やインストーラ作成が大変そうな気がするのですが、どうなんでしょう。
一般アプリの組み込みDBとしたいので。
・・・バージョン2使おうかな・・・
192 :
NAME IS NULL :04/07/01 10:44 ID:mj80YqiM
>>191 そういう用途だと、インストールの点で、ODBCを使うのは面倒そう。
VB.NET にすれば ODBCはいらないけれど、.NET Framework が入っているかが問題になるし。
193 :
NAME IS NULL :04/07/01 17:21 ID:QhIip2ce
>>2 またお前かよ、なんなんだよ「2」ってのは、何か楽しいのか?お前さぁ、みんなが楽しく話してるところに近付いただけでススーっと目を合わさずに去られたって事ってないか?
なに? いつだってそうなのか?まぁ、そうだろうな。一般社会ではお前みたいにキモいヤツは相手にしたくないんだよお前はネットの中でも「おマメ」みたいなもんだからな
引きこもった挙げ句、朝からネットにかじりついてスレが立つのを一日中待ち、すかさず「2」と書き込む。 つまんねえ人生だな
みんなが書き込む掲示板に「2」って書き込んだことで自分も社会に参加してるつもりになってんだろ
それにしてもさぁ、もう少し考えろよなんとか社会復帰しようと一晩中考えて出来たギャグが「2」かよ!!
おまえさぁ、一度外に出て人が話してるところでいきなり「2!」って言ってみろよ!もうダメなんだよ、無理なんだよ、お前には
ネット社会ですらコミュニケーションとれてないじゃんわからないだろうけどさぁ
みんな苦虫を噛み潰すような目でお前の自信作の「2」を見てるんだよそう、もう終わりにしようよ、この先楽しい事なんかないんだよ、きっと。
ぬおーデータ変換が面土居。
196 :
NAME IS NULL :04/07/09 11:34 ID:nSC8GXrZ
Ver3のsqlite3_execにUTF-16直接つっこんじゃ駄目?
198 :
NAME IS NULL :04/07/16 23:10 ID:RV+8pVD1
PHP 5.0.0 Released! [13-Jul-2004] SQLite has been bundled with PHP.
201 :
NAME IS NULL :04/08/02 15:53 ID:CPTZa5VA
同上 2004年10月発売予定(SAMS Publishing)。ただいま予約受付中。
>>201 200のは、Macmillan Computer Pub ; ISBN: 067232685X ; (2004/09/30)になってるけど
別の本ですか?
>>185 >というかまずRDBは全文検索には向かないと思うんですよね。
つか、SQLiteについてはRDBMSっぽくない使い方を考えてみようや。
もともとは軍事アプリで使うためにバークレイDBに皮かぶせたもの
だったらしいし、リレーショナルっぽくないところで
なんか面白いことできそうな予感しない?
今出てるのって
国際化テキスト検索用
エクセルみたいにA〜Z、AA〜ZZ列
普通にテキスト突っ込んじゃう
とかかな?
オイラは、Lindaのタプル空間にできないかと画策中。
Lindaってなに?→増井氏の記事がわかりやすいので読んでください。
ttp://pitecan.com/UnixMagazine/ の、2002年10月号 「Linda」ね。
204 :
NAME IS NULL :04/08/09 13:05 ID:cCyZtPbc
205 :
NAME IS NULL :04/08/09 17:17 ID:52OdYyi7
>>203 > Lindaってなに?→増井氏の記事
面白い記事を紹介していただき、ありがとうございました。
こんなものがあるとは知らなかったです。
タプル空間に SQLiteを使うというのは、
SQLiteにプロセス間通信の仲介をさせてみよう、ということでしょうか。
できたら面白い。
>>205 >SQLiteにプロセス間通信の仲介をさせてみよう
そゆことですな。
「タプル空間」って、イベントスプール+αなものだと解釈してます。
そのアルファの部分は、
・型宣言とかしなくても任意の型の任意列数のデータを入れておける
・先頭以外からもとりだせる
・パターンマッチを適用して取り出せる
・複数マッチしたらとりだされる順番は保障されない(どれか1つがでてくる)
と。
コンピュータにとっては重い要求だろうけど、
えらく簡単なソースでいろいろ表現できるメリットがある、と。
SQLiteは型がないから、エクセルみたいにA〜ZZ列にしておけば、
タプル的なデータが入る。
DBMSなのでパターンマッチで取り出すのもできる。
あとはウェイト処理と、希望に沿うレコードが入ってきたらそれを
通知する仕組みがあれば「タプル空間」になるのかな、とね。
SQLiteって、sub select使えますか?
OO?
211 :
まなみ :04/08/19 02:30 ID:GGBYH8Yl
このカキコ見たあなたは4日後に不幸がおとづれ44日後に死にます。 それがイヤならコレをコピペして5ケ所にカキコして下さい。 私の友達はこれを信じず4日後に親が死にました。44日後友達は行方不明・・・・。 いまだに手がかりもなく私はこのコピペを5ケ所に貼り付けました。 すると7日後に彼氏ができ10日後に大嫌いな人が事故で入院しました。
212 :
NAME IS NULL :04/08/24 17:59 ID:j0R9/TNS
> OO? もしかして OOP の OO かな ? オブジェクト指向 ?
>>209 へぇ〜
// create a new memory only database
$db = new SQLiteDatabase(":memory:");
こんなことできるんだ。知らなカターヨ
根本的にsqlを分かってないうえperlで申し訳ないが、 $r=$h->prepare("begin;"); $r->execute(); (大量にデータ挿入) $r=$h->prepare("end;"); $r->execute(); $r->finish(); としとけば、最後のend;でcommit;の代わりもしてくれる? データ挿入中に1000件ごとにcommit;投げてるんだけども。
>>209 そうそう。私も探してます。
// create new database (OO interface)
$db = new SQLiteDatabase("db.sqlite");
って書いてあるのに、SQLiteDatabaseクラスに関する
記述はどこにあるねん。
216 :
NAME IS NULL :04/09/01 00:09 ID:cIZqANlL
>>209 >>215 すまん、最初何言ってるのか理解してなかった。
PHP5でSQLiteをオブジェクト的に使うラッパークラス(SQLiteDatabase)の
ドキュメントがどこにも見当たらない、ってことね。
確かにPHP5のソースをSQLiteDatabaseでgrepしても、テストコードしかヒットせず。
うーむ…
ttp://www.wiki.cc/php/Sqlite_oop?PHPSESSID=90c148e7399077180d696bfdd241288e によると、PHP自身にクラスメソッドを問い合わせる方法が書いてあって、
SQLiteDatabase
SQLiteResult
のメソッド名一覧は、ある。
で、これとPHP5のソースをよく見比べてみたら、鍵は
php-5.0.1/ext/sqlite/ にある sqlite.c だな。
997行あたりに
REGISTER_SQLITE_CLASS(Database, db, NULL);
REGISTER_SQLITE_CLASS(Result, query, NULL);
REGISTER_SQLITE_CLASS(Unbuffered, ub_query, NULL);
REGISTER_SQLITE_CLASS(Exception, exception, zend_exception_get_default());
とあるから、おそらく
SQLiteDatabase, SQLiteResult, SQLiteUnbuffered, SQLiteException
の4つのクラスが定義されてて、その他はない。
この4クラスそれぞれに
function_entry sqlite_funcs_db[] = {
PHP_ME_MAPPING(__construct, sqlite_open, NULL)
/*PHP_ME_MAPPING(close, sqlite_close, NULL)*/
PHP_ME_MAPPING(query, sqlite_query, NULL)
PHP_ME_MAPPING(queryExec, sqlite_exec, NULL)
PHP_ME_MAPPING(arrayQuery, sqlite_array_query, NULL)
PHP_ME_MAPPING(singleQuery, sqlite_single_query, NULL)
PHP_ME_MAPPING(unbufferedQuery, sqlite_unbuffered_query, NULL)
PHP_ME_MAPPING(lastInsertRowid, sqlite_last_insert_rowid, NULL)
PHP_ME_MAPPING(changes, sqlite_changes, NULL)
PHP_ME_MAPPING(createAggregate, sqlite_create_aggregate, NULL)
PHP_ME_MAPPING(createFunction, sqlite_create_function, NULL)
PHP_ME_MAPPING(busyTimeout, sqlite_busy_timeout, NULL)
PHP_ME_MAPPING(lastError, sqlite_last_error, NULL)
PHP_ME_MAPPING(fetchColumnTypes, sqlite_fetch_column_types, NULL)
/*PHP_ME_MAPPING(error_string, sqlite_error_string, NULL) static */
/*PHP_ME_MAPPING(escape_string, sqlite_escape_string, NULL) static */
{NULL, NULL, NULL}
};
のようにメソッドから一般関数へのマッピングが定義されてる。
ところで PHP5.0.1 に同梱されてる SQLite は 2.8.14。
SQLite は 3.0 の安定版がもうすぐ出そうだし、今手を出すのはためらうな…
ちなみに 3.0 系では「型アリ」になる予感
SQLite はいざとなったらファイルひとつを持ち回せばなんとかなるっていう 手軽さもさることながら、構造も(他のに比べれば)簡単なので、SQLite 自体 の機能を追加したり、省いたりしやすいのが魅力なのかな。 亜種がたくさんできるのは仕方が無いという。 PHP の SQLite への対応は嬉しい。バージョン 3 に対応するときは、2 と 3 を別のモノとして扱ってくれると混乱少ないかなぁ?ふたつ同居になるけど。
220 :
215 :04/09/01 10:14 ID:???
ほほう、216さん very thanx です。 私もソースハックしてみます。
>>206 SQLiteは一般的なRDBMSと違って独立したサーバープロセスを持っていないため、
複数のプロセスから要求をアトミックに処理するという並行プログラミングの
ための基本的な要件がまったく抜け落ちています。
つまり、プロセス間通信の受付けや複数の依頼元からの要求を破綻なく処理する
という中枢部分をゼロから実装しなければならないわけです。
これって結構大変ではないでしょうか。
>>221 失礼ですが、 SQLite を使ったことありますか?
>>222 僕の知識は古いですか?
SQLiteと一般的なRDBMSとの最大の違いは、アプリケーションプログラムの
内部にライブラリとして組み込まれて動くことだと理解していましたが。
224 :
221 :04/09/19 21:39:02 ID:???
あ、複数のプロセスから同時にデータベースファイルを update しても トランザクションは破綻しないのかな? それならファイルにアクセスできる=タプルスペースを共有できる ということになりますね Rindaとかはネットワーク越しにやってるから、ついついそれを基準に 難しく考えてしまいました。
チラシの裏でやれよw
>>222 失礼ですが、Lindaをご存知ですか?
問い合わせに対してマッチするデータがない場合、誰かがマッチする
データを投入してくれるまでブロックして待ち合わせる必要が
ありますが、SQLにはそのような機能はありません。
これが並行プログラミングの基本要件です。
ポーリングでもして待ちますか? w
>>224 >複数のプロセスから同時にデータベースファイルを update しても
>トランザクションは破綻しないのかな?
破綻するようなのはトランザクションと呼ばないと思ってたんだけど、俺の勘違いか?
228 :
NAME IS NULL :04/09/21 11:19:23 ID:vUHMrqUQ
>>226 > ブロックして
とは何を何からブロックするのですか。
>>228 in() や rd() で問い合わせを実行すると、マッチするデータが出現するか、
タイムアウトするまで待つため、その間制御は帰ってきません。
このことをブロックと書きました。
# これによって待ち行列やランデブーなどのロジックを実現します。
>>226 恥ずかしながら寡聞にして存じません。
私の指摘したかった点は、
「SQLiteは一般的なRDBMSと違って (中略) 基本的な要件がまったく抜け落ちています」
についてだけだったのですが、
他の「一般的なRDBMS」ならばそういった要件が満たされるのでしょうか?
PostgreSQL LISTEN NOTIFY でググる。 と書いてみたけど、勘違いしている可能性大。
変なひとは放置の方向で。>all
233 :
NAME IS NULL :04/09/23 14:49:59 ID:GKv/8yXG
↑オイラがふったLindaが元凶だったのか、すまぬ。
もともとの意図はというとね、普通のRDBMSっぽくない使い方で
SQLiteにハマる使い方ってもうないの?
という振りをしたかったわけ。
>>203 ね。
そんでPHP5.0.1調べて
>>216 とかカキコしてた時点で、
上記の話は流れたものとおもってたよ。
>ポーリングでもして待ちますか?
って、そうだよな。
>>206 ではあんま書かなかったけど、Lindaがやってるコトは、
コンピュータにとってはスゲー重い処理であることは承知してるんさ。
ええと…
誰かがレコードを挿入することをずっと監視してるひとが必要で。
そんで、そのひとが「今、何かを待ってるヤシのリスト」を持っていて、
レコードが入るたびにリストの頭からチェックしないといかん。
マッチしたら、そのひとに通知して、ブロッキングを
解除してあげないといかん訳でしょ。
その通知には多分、セマフォとか使うんだろうけど、
通知するだけでいいかっつーとそうでもなく、
わずかな時間差のために
通知したやつが意図したのと別のレコードを
通知されたやつが取ってしまうということを防ぐために、
ROWIDなどを知らせる必要がある。じゃあ名前つきパイプ?
…ここまで来ると、SQLiteを利用する方法っていうより、
SQLiteを改造する話になってしまうわな。
で、改造元がSQLiteである必然もないのかなと。orz
カキコしたとき考えてたのは、「プロセス間通信をSQLiteにやらせる」
っていうよりは、「いろんなことが簡単なソースで書けるLindaっつーものを、
フリーツールをちょっといじって実現できるのでは?」
てことだったし、やっぱりSQLiteとはズレズレ。(゜д゜)
自分で振っておいて申し訳ないが、
Lindaの話は流し、流し。m(_ _)m
で、普通のRDBMSっぽくない使い方でSQLiteにハマる使い方ってもうないの?
3.0 安定版(3.0.7)キタ━━━━(゚∀゚)━━━━ッ!!
みんな SQLITE_BUSY が返る場合のことを意識してコード書いてる? 漏れは PHP バインディングを使ってるけど、httpd は普通何枚か fork してて複数プロセスから同時アクセスがありうるから、厳密に言えば データベースロック → リトライ*N → タイムアウト → SQLITE_BUSY という場合のことも考えてコードを書くべきなんだよね。
漏れもPHP。 一応エラー意識して書いてるつもりだけど最後はrollback頼みだよ。 insert/updateを二三行う場合の模範例みたいのありますかね。
バージョン3のJDBCのWrapperはやくでねーかな。
238 :
NAME IS NULL :04/11/07 18:21:53 ID:ipMPK00B
hoshu
240 :
メモ :04/11/16 04:18:59 ID:???
>4-5 phpSQLiteAdmin
241 :
NAME IS NULL :04/11/16 11:11:39 ID:stpfuOmw
>>239 DataTable.Rows.Count ではどうでしょうか。用が足りませんか。
242 :
NAME IS NULL :04/11/16 12:59:26 ID:EESBhBb7
>>239 ADO.NET Data Provider for SQLite のソースを見ると
SQLite3 用の場合なら sqlite3.cs に
[DllImport("sqlite3")]
private static extern long sqlite3_last_insert_rowid(IntPtr h);
と取得できるように宣言されているけれど、使用されていない。
ということは、直接対応するプロバティ等は作られていないのでは。
ADO.NET の標準にないからでしょう。
標準の機能を駆使して間に合わせる方が、早そうに思えます。
243 :
239 :04/11/17 13:06:43 ID:???
>>241 >>242 ありがとうございました。
いじってみます。
C#, ADO.NETも平行で勉強しているので混乱気味です。
>>240 2種類あるようだな。
俺はsourceforgeのを使ってる。
SQLite試してみたけど、これって日本語が文字コードそのままで入っちゃうのね。 ラッパー噛ますか、自分でコンバータ書かないと駄目なのかな。
エスキューライト? スクライト?
(・∀・)シークァライト!!
エスキューエル いて
ADO.NET Data Provider for SQLite パスに日本語が入ってるとあぼーんする…orz
250 :
NAME IS NULL :04/12/13 09:35:12 ID:oxhzl4xo
SQLiteについて質問。 1、ストアドプロシージャは使えますか? 2、トランザクションは実装されてますか?
252 :
NAME IS NULL :04/12/14 14:08:53 ID:sBR5K/AY
SQLite(DLL)をDelphiで使うには、どのようにしたらいいのでしょうか。
254 :
252 :04/12/14 14:25:33 ID:sBR5K/AY
253> ありがとうございます。 しかしながら、D6のパーソナルだったり。 データベース関連のユニットないんです。
257 :
NAME IS NULL :04/12/20 12:30:56 ID:U2fIrr/6
ADO.NET Data Provider for SQLite とりあえず日本語は通るみたいだけど、ファイルのパスどうしてる?
>>257 「新しいフォルダ」や、「C:\Documents and Settings\<username>\デスクトップ」など…
ConnectionStringにNew=Trueなんてやっても、
'Finisar.SQLite.SQLiteException' のハンドルされていない例外が sqlite.net.dll で発生しました。
追加情報 : unable to open database file
ハンドルされていない例外 : Finisar.SQLite.SQLiteException: unable to open database file
at Finisar.SQLite.sqlite3.Throw()
at Finisar.SQLite.sqlite3.CheckOK()
at Finisar.SQLite.sqlite3.open(String filename)
at Finisar.SQLite.SQLiteConnection.Open()
(略)
と言われてショボーン。AccessMDB使おうかな
ソースも配布されてるんだから、デバッグしてみ。
260 :
NAME IS NULL :04/12/21 13:13:02 ID:MSZ78en0
>>258 日本語のパスが通らないぞ、という話。
再現できなくてヘンだぞ〜と思っていたら、自分は古いバージョンを使っていた。
SQLite2 のみ対応していた Version 0.18 (July 01, 2004)
までなら日本語パスが使えていた。Version 0.19 と最新 0.20 では確かにダメ。
とりあえず、デバックのヒントということで。
261 :
258 :04/12/21 21:17:33 ID:???
情報ありがとうございます。 わかる範囲でソース追いかけてみます
262 :
NAME IS NULL :04/12/22 09:24:02 ID:PW+hMuX+
ADO.NET Data Provider for SQLite (Version 0.20) で 日本語のパスが通るようにデバッグしてみました。 Util.cs の 178 行目 public MarshalStr (String str) : this(Encoding.ASCII,str) を public MarshalStr (String str) : this(Encoding.Default,str) に変更する。(SQLite2 用に) sqlite3.cs の 54 行目 _encoding = Encoding.UTF8; を _encoding = Encoding.Default; に変更する。(SQLite3 用に) この2ヶ所のエンコーディングを、日本語版.NET でなら shift-jis コードを 読めるように Encoding.Default に変更すれば、日本語のパスは通るようです。 ただし、他の動作に問題がないかは、まともに確認してません。 ASCII を Default に変えるのはたぶん問題ないとしても、 UTF8 の方は、わざわざそれを使っていることに理由ありなら、 まずい変更ということになるわけで、ソースをまだ追跡してないので、 あてにせずに自分でチェックして下さい。
そもそも、ファイルオープン時にファイル名まで わざわざIntPtrにしてマーシャリングかけてるのが訳分からん。 sqlite3.cs 76 行目 private static extern int sqlite3_open(IntPtr filename, out IntPtr db); を private static extern int sqlite3_open(string filename, out IntPtr db); sqlite3.cs 578 行目 int res = sqlite3_open(m.GetSQLiteStr(),out DB); を int res = sqlite3_open(filename,out DB); でいいような気もする。
264 :
NAME IS NULL :04/12/22 15:56:24 ID:TQsgyPh1
お前らってすごいですね。 ちょっぴり感動しました。 私は、カレントディレクトリを変更してファイル名のみで開くようにして逃げました。 何か出来ることあったらやります。 出来ることは少ないので、あんまし役に立てそうに無いですが・・・・
265 :
258 :04/12/23 15:21:34 ID:???
>>263 同じようにsqlite2のほうもokでした…
涙で画面が見えません(つд`)
266 :
262 :04/12/24 09:18:51 ID:DruLsR8d
>>263 なるほどです。
そこを変えるなら、エンコーディングには手をつけなくてすむし、
その修正が正しいと思います。
そもそも、ファイル名の文字コードとデータの文字コードが
同じにできるとは限らないでしょうから。
ということで、ひとまずデバッグ完了にしてもいいでしょうね。
ご苦労さまでした。
それにしても、SQLite3 対応バージョンになったら、どうして
わざわざファイル名までマーシャリングしているのか、という謎ですが、
ソースを眺めていると、SQLite3 の UTF-16 サポートに対応しかけて
途中で止まっているように見えます。
sqlite3_open16() を使おうとしたものの、ASCII コードと互換性がないから
このやり方ではまずいと思いなおして、やめにした痕跡(日本では困った残骸)
かな、と思いました。
267 :
NAME IS NULL :04/12/24 09:49:25 ID:j+9u7lDN
えっと、おまえらちょっと教えてください。 2歳児程度の知能でわかるように。 今日始めてSQLってものに興味持った。 で、WindowsXP+SQLiteって環境で何かやってみたいなと。 オレはいきなり困ったんだよ。 createなんちゃら、とかでデータベースのファイル作るんだろ? その作業はいったいどこでどうすればいいのか、と。 試しにコマンドプロンプトから sqlite hoge ってやってみた。 当然パスなんか通ってないし何も起きない。 なぁ、助けろお願いします。
268 :
263 :04/12/24 11:02:26 ID:???
>>266 あっちではASCIIが標準っぽいから、UTF使わん時は
とりあえずASCIIにしとけやって感じだったんでしょうなぁ。
何にしても、ファイルオープンはOS依存部分なんで、
現状、下手にファイル名はエンコーディング変換すべきじゃないかなと。
それにしても、どの言語使ってても文字コード関係の問題は
プログラマ苦しめてくれるわ _| ̄|○
>>267 sqlite c:\hoge.db で create table したら、 hoge.db が出来てる。
あとはSQL92本とSQLite公式ドキュメント読んで気合で。
269 :
NAME IS NULL :04/12/24 14:52:32 ID:j+9u7lDN
>>268 さんくす。
ただ、書き忘れてたことがあって。
よー考えたらPHPにSQLiteのモジュール組み込んだだけなような。
非常に感謝した。
270 :
NAME IS NULL :04/12/27 12:27:32 ID:UKRyD7qw
ADO.NET Data Provider for SQLite (Version 0.20) 日本語処理デバッグの追加メモ = 問題 = デフォルトのオプション設定 Version=2;UTF8Encoding=False で 日本語データを処理できない。 つまり、SQLite2 が Shift-JIS コードの日本語データを処理できない。 (SQLite.exe で入力した日本語データを読めないぞ、とか、 以前から使っていたデータベースを読めないぞ、となる。) = 解決方法 = sqlite2.cs 55, 457, 461行目と Util.cs 178行目の Encoding.ASCII を Encoding.Default に変更する。 Encoding.GetEncoding("Shift-JIS") として文字コードを明示してもよい。 これで SQLite2 で Shift-JIS を扱えるようになる。 注) Version 0.18 までは、この問題は起こらない。 SQLite2 で UTF8 を使うときには、もともと問題でない。 SQLite3 は UTF8 がデフォルトで、UTF8Encoding=False は無視されるので、 SQLite3 にも無関係。
Defaultはともかく、Shift-JIS決め撃ちはよろしくないな。 Winのコードは、正確にはShift-JISじゃないし。 まぁ、何にしてもUTF-8使おうぜ。
272 :
270 :04/12/27 14:10:38 ID:bP0BeZGo
確かに。これからは UTF-8 を使うのが推奨。
273 :
NAME IS NULL :04/12/30 17:41:45 ID:FzyFXvYT
unicodeなんて糞 今までどおりeucかsjisでええわ
> までどおりeucかsjisでええわ m9(^Д^)プギャー こういう奴が、MS932と純Shift-JISの区別もつかずに DBに文字放りこんでるんだろうな。
UTF8 って MS932 の文字も含まれているの?
>>277 文字コードの話が出ると必ずこういうのが沸いてくるのはもう仕方ない。
普通にスルーしとけ。
Perl DBD::SQlite で使ってみてるんですが、LIKE 構文でちょっとはまってます。 WHERE string LIKE '%キーワード%' みたいにして文字列中間一致検索してるんですが、 キーワードに % や _ を指定してしまうと全てにマッチしてしまうので困ってます。 じゃあ % や _ はエスケープして LIKE '%\%%' みたいにしたらどうかと思ったらダメだし、 LIKE '%|%%' ESCAPE '|' みたいにエスケープ文字指定しようとすると Syntax Error になるようです。 何か良い解決策はないでしょうか?
>>276 含んでいると言われれば、含んでいると思う。
ただ、重複符号やWAVE DASH変換とかの問題もあるけど。
IANA の登録名がWindows-31Jなので、MS932よりこちらの名称の方が妥当かも。
窓べったりの開発ならShift_JIS、クロス開発なら、UTF-8が安全牌かな・・・
個人的に、SQLiteのウリは可搬性だと思うので、UTF-8使うのがよさげだと思った。
>279 phpでは\エスケープで動いたが。なぜ動かなかったスクリプトを書かない? $_ = '%_\\'; print "$_ => "; $_ =~ s/([%_\\])/\\\1/sg; $_ = "%$_%"; print "$_\n";
これからSQL勉強するのにお勧めの本ってある?
283 :
279 :05/01/03 04:28:16 ID:???
>>281 思い通りに動いてくれないスクリプトの該当部分晒します。
($keyword に検索したい文字列が入っています)
$keyword =~ s/([%_\\])/\\$1/g;
my $query = "SELECT * FROM files WHERE namer LIKE ' . $dbh->quote("%$keyword%");
my $sth = $dbh->prepare($query);
$sth->execute();
1行目がないと、% や _ をキーワードに入れた時は
問答無用で全件にマッチしてしまいます。
1行目をつけることによって % や _ はエスケープされ、
適切な物のみがマッチすることが期待されますが、
実際には1件もマッチしません。
> "SELECT * FROM files WHERE namer LIKE ' これはOKなのか? 入力ミスかどうか知らんけど。
285 :
283 :05/01/06 01:24:06 ID:???
>>284 すいません、そこは貼り付ける時の編集ミスです
286 :
NAME IS NULL :05/01/06 21:28:40 ID:hqOqZvbU
APACHE2 + PHP5 + PDO + SQLite3 使っていますが何か?
>283 sqlite単体でもそういう結果返ってくるね PHPはどう処理してるんだろうと思ってソース覗いてみたけど 俺にはさっぱりだったよw
何か、と言われても そっれがどうした僕ドラえもんって感じだ。
>>286 どこで、が重要。ローカルなら普通すぎ。
PHPでSQLite使いたいのですが、 mbstring.internal_encodingがEUC-JPの状態で UTF-8しか対応していないという噂のSQLiteに日本語をそのままつっこんで SELECT * FROM table WHERE hoge LIKE '%あ%' とかもふつうに使えるようなのですが、 問題が起こるケースはどんな時なのでしょうか?
大文字小文字
292 :
290 :05/01/10 13:33:03 ID:???
>291さま 私の質問への回答でしょうか。だとしたらありがとうございます。 しかし、今のところ問題がなさそうに見えます。 INSERT INTO table (comment) VALUES ('ごっちゃまぜゴッチャマゼ鬱'); の後に SELECT * FROM table WHERE comment LIKE '%チャ%'; SELECT * FROM table WHERE comment LIKE '%ちゃ%'; でもちゃんと結果を返してくれます(まぁ実際にはハンカクカナなんぞ入れませんが)。 やりたいことの範囲内で問題がなければいいのかなとも思うのですが。 やりたいこと:掲示板スクリプト(コメント欄で日本語LIKE検索を使いたい)
>>292 う〜む。そーす見ても分からんな。
LIKEじゃなくGLOBを使って、*/?を[*]/[?]にしてみたらどうよ?
いっそ「検索にワイルドカードが使えます」とアナウンスするほうが楽かもしれないが。
294 :
290 :05/01/12 00:28:51 ID:???
>293さま んとですね、私の書き方がまずかったです。 (1) いろんな情報を見た結果、SQLiteで日本語を扱うには UTF-8でないといけないのかな、と判断した。 (2) しかしながら私の使っているPHPはmbstring.internal_encodingがEUC_JP。 ということはEUCJPでSQL作成→UTF8に文字コード変換→クエリ実行→ 結果取得→マルチバイトのカラムはそれぞれEUCJPに文字コード変換、 とやらないと *何か* 問題が発生するだろうなぁ、と考えた。 (3) まぁそういうラッパー作るのが正当なのかな、と考えつつ ものは試し+ものぐさでEUCJPのままマルチバイト入れても、 ふつうに使える(ように見える)。 という前提があって、さて、本当に問題は起こるのか?というところを知りたいのです。 一見問題なさそうで本格運用して、あとで問題発生が怖いのですよ。 こんなケースでこんな不具合があるよ、 という経験をお持ちの方、いらっしゃいませんかねぇ? ちなみに当方ロリ○ップでコソーリSQLite使用中
>>294 ああ、そういうことならsubstring()とかlength()等文字列操作関数以外では特に関係無いから。
>>279 私も where xxx like '%あ_い%'
で、検索ができませんでした。
sqlite_escape_string -- クエリパラメータ用に文字列をエスケープする
これ、やった結果は、どのような文字列になるんですかね。
php じゃ、なくて、python でやってるんで、
sqlite_escape_string のようなものがあるか、今調べようとしているんですが、
where xxx like '%あ\_い%'
と \ を入れてもだめだし、
取り合えず、 like 使うときは、 _ があったら、 % にでも
して、やり過ごそうかと思ってますが。
どう?
297 :
296 :05/01/12 14:38:21 ID:???
pdo_sqliteが見当たらないどこいったーー
いつのまにか SQLite3/Ruby ができてた。
LIKE ... ESCAPE 対応sage
alter table 出来るんだね。
ALTER TABLE ... RENAME TABLE ... テーブル名変更のみ対応の限定版みたいだけどね。少し楽になるかな。
303 :
NAME IS NULL :05/01/31 11:03:59 ID:3JFZomnK
3.10(alpha) age
304 :
NAME IS NULL :05/02/02 07:46:54 ID:mdzMwrr7
Sqliteが使える鯖あったら、教えてチョ。
XREAの一部のサーバーでPHP5が利用可能になったよ。 どのサーバーで使えるかは事前に確認しろよ。
3.1.1 (beta)
308 :
NAME IS NULL :05/02/13 02:33:51 ID:bTxKUDlt
どうがんばっても3.1.1betaがダウンロードできない・・・
3.1.2を落とせばいいじゃない
stableデタ━━━(゚∀゚)━━━!!!
311 :
NAME IS NULL :05/03/01 17:13:17 ID:+RdvxZ60
PHPネタですが、、 PEAR::DBが1.7.0からsqliteドライバにtableinfoメソッドが追加されたので PEAR::DB::DataObjectでSQLiteが利用できるようになりました。 createTables.phpによるsqliteのDB解析はいくつかの問題点があったのですが それらも解消されているようです。(DSNからDB名を取得してschemeのiniファイル を作る場合にパスもDB名と解釈してしまいエラーがでる問題が解消されている)
312 :
NAME IS NULL :05/03/14 11:06:00 ID:zJnP9H2H
3.1.5age
313 :
NAME IS NULL :2005/03/25(金) 09:46:27 ID:v5PK2Oi/
3.2.0age
2005 March 21 (3.2.0) Added support for ALTER TABLE ADD COLUMN. Added support for the "T" separator in ISO-8601 date/time strings. Improved support for Cygwin. Numerous bug fixes and documentation updates. 列追加はちょっといいかな?
うん。かなり嬉しい。
316 :
NAME IS NULL :2005/03/31(木) 21:11:39 ID:S6NJNymo
3.2.1 age
317 :
NAME IS NULL :皇紀2665/04/01(金) 11:57:56 ID:WCU4nkIR
SQLiteはいつになったらストアドプロシージャに対応しますか?
>>317 えーっと、sqliteでそれが出来る意味ってあるの?
ttp://www.sqlite.org/changes.html 2005 March 29 (3.2.1)
Fix a memory allocation error in the new ADD COLUMN comment.
Documentation updates
でもトップページのは
This release fixes a memory allocation problem in the new ALTER TABLE ADD COLUMN command.
コメントとコマンドってずいぶん違うな
>>318 速度的な面というより他のDBとの互換性の問題で
必要性があるんだが。
DB”MS”ではないsqliteにはいらない機能だろ。 っていうかどうやってつかうん?? だいたい、ストアドなんてDBMS間でも互換性低いし。
例えばDBが変更になる可能性がある場合に SQLの標準ではない関数はストアドファンクションにして 抽象化してしまうとかってやらない?
create_function()があればそれでいい気が駿河
>>325 激しく同意。
>>327 Cインターフェースに同名のがある。他言語のやつはこれのwrapperだな。
329 :
NAME IS NULL :2005/04/06(水) 19:33:56 ID:nkLoBP4Q
PHP5+PDO_SQLite+SQLite3使っている人いるか? 開発しているとさ、DELETEしているのにDELETEされないときあるよね。 エラーも出ないし。。。 訳わからん。
commit したか?
331 :
NAME IS NULL :2005/04/08(金) 15:38:37 ID:+arkX/45
住人まだいるかな? Win版 3.2.1で、 sqlite> create table test (a integer primary key, b varchar); sqlite> insert into test values (1, "ほげ"); sqlite> insert into test values (2, "ほげほげ"); sqlite> insert into test values (3, "あらら"); sqlite> select * from test where b like "%ほげ"; とすると、結果が 1|ほげ sqlite> なんだが、これってそういう仕様? なんで2の「ほげほげ」が返ってこないんだ?
そのSQLをUTF-8で保存して実行してみた。 C:\sqlite>sqlite3 test.db < hoge.txt 1|縺サ縺 2|縺サ縺偵⊇縺 多分、文字コードの問題かと思われる。
なるほど。UTF-8 だと 1|ほげ 2|ほげほげ が返りますねえ。 Ver.2.8.15 の SQLite.exe なら、Shift-JIS でも UTF-8 でも、 「ほげほげ」も返ったよ。 SQLite3.exe で Shift-JIS のときだけ、違うのか。
つかSQLITE_UTF8とSQLITE_ISO8859どっちでコンパイルしたんだ
335 :
333 :2005/04/11(月) 10:40:34 ID:???
これは、全部 Precompiled Binaries For Windows の配布バージョンでの結果。どっちなんでしょー。
自分でコンパイルした方がいいかもしれんな。
VC6でコンパイルを試みたが、 sed -e s/--VERS--/`cat ${TOP}/VERSION`/ \ -e s/--VERSION-NUMBER--/`cat ${TOP}/VERSION | sed 's/[^0-9]/ /g' | awk '{printf "%d%03d%03d",$$1,$$2,$$3}'`/ \ $(TOP)/src/sqlite.h.in >sqlite3.h ここだけがクリア出来ない。 3.0.1の時は無かったよなぁ。
SQLiteってなんて読むの?
しーけらいと
すくりて
俺はえすきゅーらいとって読んでるけど正しいのかどうかは知らん
俺もえすきゅーらいと
PostgreSQL はポスグレ SQLite はエスキュレ MySQL はマイスキュレ
俺もえすきゅーらいとだけど正しいかどうか分からんよなぁ。
345 :
NAME IS NULL :2005/04/17(日) 05:04:22 ID:Jx/K/CRQ
型が決まってないってのは、そういう余分な判定処理を省いてるって事。 コンパクトな組み込みDBであるってのがSQLiteの売りなので、 本格的なRDBMS並の機能を使いたいなら、DBの選択が間違っているよ。
>345 そこの「お詫びと訂正」読んだ?
まあ、きっちりスレ読めばわかるように、(とりあえず、
>>100 からあたりを読む)
SQLite でまとまった数のインサートするには、トランザクションを使わないと遅い。
使えばかなり速い、と覚えておかないと比較を間違うぞ、ということで。
SQLiteQA
>>273 が、SQLite3 対応などのアップデートしたね。
Berkeley DBやNDBMが SQLによる操作が可能になったもの、という解釈でいいの?
BerkeleyはLDAP構築した時によく潰れたから、二度と使うまいと思った。 NDBMはシラネ。
353 :
NAME IS NULL :2005/04/19(火) 22:15:10 ID:kUry0XBZ
SQLite3をインストールしたらコマンドラインのコマンドが sqliteではなくsqlite3になってしまったのですが、 従来のSQLiteとSQLite3って別物なの?
>>353 SQLite と SQLite3 はデータベースファイルに互換性がないので、
ダンプしないといけないよ。あと、
>>333 のような違いもあるか。
使い勝手はさほど変わんないけどね。
コマンドラインのコマンド(sqlite3, sqlite)もちょっとした
違いがあったように思うけど、詳細は忘れた。試しに使う程度
では、今までと同じように使えるはず。
>>354 なるほどDBに互換性がないんですね。
ありがとうございました。
356 :
NAME IS NULL :2005/04/21(木) 15:44:54 ID:L2hn0Pnq
mac os x tiger に標準で載るんだってね。
Solaris10 にも標準で載ってる。 デーモンの稼働監視・操作ツールが 10 で一新されて、 そいつのステータスを保存しておくバックエンド。 おまけでインストールされるとかいう扱いではない。
SQLiteって最近知ったんだけど昔からあった?
ずっと前からあったけど昔にはなかった。
ぶっちゃけSQLiteって素晴しすぎないか?
ACCESSみたいなフロントエンドが出来たら流行りそうな気がする。 OpenOffice辺りでやってくれんかな。
<チラシの裏>
Delphi6 personalでプログラミングの勉強はじめたんだけど、
libsqlというVCLとSQLiteを使ってデータベースを作り始めた。
SQLiteの3.2.1には、
>>331 の問題があるんで、UTF8の変換で扱うようにした。
いろいろと勉強となった。
自分で使うデータベースには、この組み合わせはお手軽で非常によい。
BDE等余計な気を遣わなくても動作するので、ローカルデータベースにオススメ。
今度はBLOBを扱えるようにしたい。
</チラシの裏>
漏れも組込みメインで使ってるけど、 デバッグやテストでそういうツールがあったらなあということはよくある。
365 :
NAME IS NULL :2005/04/28(木) 14:54:39 ID:/d52HoIm
もっとみんなもどんな風に使ってるのか具体例をどんどん挙げろや。
zaurus で使うと美しいカンジ
>>365 俺は単なるユーザなんでアレだが
2chブラウザのJane界隈では溜まったログの読み込み高速化のためにidxファイルのDB化としてsqliteを使ってる
現在、5種類のJane派生がsqliteを使用してる
あとはねぇ、RSSブラウザで溜まった記事をsqliteにぶち込んで高速化してるのがあったな
以前話題のあったglucose
ユーザとしては鯖が必要ないのとDLLだけで済むのが利点
>ユーザとしては鯖が必要ないのとDLLだけで済むのが利点 うんうん。 フリーソフトのデータベースに使えるのってsqliteぐらいしか思いつかないのだが。 とあるフリーソフトのためだけに、ユーザーにMySQLインストールさせるわけにはいかんでしょ。 というわけでsqliteを使いたい(自称)プログラマなのだが、DBは扱ったこと無くて苦戦中。
>>369 DLLつうことはWindows限定の話だとして、
MySQLサーバもDLLファイル1つだけ済むよ。
MySQLでやってたのをSQLiteに持ってきたいとは思わないけど、
今までファイルでやってきたのをSQLiteで楽できるのは実にいい。
>MySQLサーバもDLLファイル1つだけ済むよ !!!!!! まだ俺も調査が足りないなあ。ありがとう
うーむ、製品に使いたくて仕方ないのだが、bugがあった時自分で対応できないかも知れないのが怖い…。 ソースを完全に理解すればいいんだろうけど。
大丈夫、全部あなたが自前で書くよりは bug 少ないはず。
SQLiteで使えるMySQLAdmin的なものってありますか?
確かに保守は問題だな…。自分で書いたコードと違ってデバッグが面倒かも。
SQLiteも、大手が採用し出してる所見ると、 目立つほど大きなバグは無いんじゃないかとは思う。 後は、実績だけかね。
378 :
NAME IS NULL :2005/05/06(金) 19:28:06 ID:olCECiB8
>>370 firebirdもそーすよ
mysqlは組み込み(embbeded)版を使うには専用の初期化関数を使う必要があるけど、、firebirdは組み込み版とサーバ版と同じでDLL差し替えだけで動く。
あと、たぶんどっちも複数のプログラムで同じDBに同時にアクセスできない。sqliteはできる。
みんながどんどん使い始めればbugも枯れてくるでしょう。 技術力に自信がなければ先駆者にはならない方がいいと思いますが。
2.x系を使用中です 3.x系って2.xと比べて何が違うんでしょうかね
>>380 UTF16が使えるとか、BLOBが使えるとか、Prepared Statementが
使えるとか、Collate functionが使えるとか、色々拡張されてる。
かなりバグも出尽くしてきたし、そろそろ移行を勧める。
現在RubyでSQLite使ってるんだけど プログラム中でテーブルが作れないんだけど なにかわかりますか? db = SQLite3::Database.open ( "database_name" ) db.transaction db.execute( "create talbe t (id integer)" ) db.commit db.close
383 :
382 :2005/05/09(月) 11:33:41 ID:???
db.execute( "create table t (id integer)" ) 訂正
384 :
382 :2005/05/09(月) 11:55:34 ID:???
すいません 作成できましたorz
>>382 うちではそれでちゃんと作れてるけど?
何かエラーとか出てないの?ファイルやディレクトリのパーミッションは?
orz
イ`
388 :
2? :2005/05/09(月) 23:52:42 ID:???
もしかして プログラム上からは、DROP TABLE出来ない仕様とか?
いや、普通にできるだろ・・・
390 :
NAME IS NULL :2005/05/12(木) 15:15:43 ID:MipvxbrD
データベースについて質問 下のプログラムを一度に複数実行したとき テーブルロックを起こします ロックを回避する方法はありますか? それとも、私がデータベースそのものを勉強しなした方が良いんでしょうか・・・ 〜 d = オープン begin d.transaction d.excute("insert into テーブル(a,b) values("a","b") d.commit rescue d.rollback ensure d.close end 〜
391 :
NAME IS NULL :2005/05/13(金) 01:48:50 ID:Gb3T45gj
こんな便利なアプリはPerlくらいLinuxの標準になれればいいのにね。
>>391 SQLiteって、アプリの位置づけなのか・・・?
どちらかと言えばライブラリだと思うが・・・。
Perl もアプリじゃないと思うが・・・。
みんなアプリ
「プログラム」とか「ソフトウェア」って言えばいいのに「アプリ」なんて言うから。
細かいことを言うと、 アプリケーションとソフトウェアはほぼ同義。 プログラムはコードそのものを指すことが多い。
まあ俺定義なんだがな。
適用業務プログラム
業務アプリケーションは、業務適用業務プログラム IBM 出身のおっさんは絶対にアプリケーションって言葉を使わなかったな ところで sqlite ってデータファイルのサイズはどうですか 頻繁に更新掛けると急激に肥大化したりとかは無いですか?
400 :
NAME IS NULL :2005/05/13(金) 22:05:39 ID:zQWDZ7V/
アッチョンプリケ〜 ション 今から使うシステムでそんなにハードに使わないけど、 行レベルロックができないのはちょっとなー、 ってことでMySQLを選択したけど、インスト不要ってのはやはりお手軽だね。
アプリの定義も知らんくせに生意気抜かすな雑魚ども。
SQLiteって2ちゃんねるのシステム作るぐらいなら十分耐えられるかな?
釣りか?
404 :
NAME IS NULL :2005/05/16(月) 01:00:22 ID:M4q00F3S
SQLiteって整数型のフィールドで INSERT時に自動的に値をインクリメントさせるプロパティって 指定できますかね?
FAQ嫁。
>>405 FAQ読みました。
"INTEGER PRIMARY KEY"とすればいいんですね。
でもSQLiteって"ALTER TABLE"ができないから
複数カラムを主キーにする場合どうすればいいんだろうか?
とか思いました。
馬鹿に馬鹿と罵倒されるとは可哀相な奴だな
>>407
410 :
406 :2005/05/17(火) 05:44:38 ID:???
FAQもマニュアルも読む気しない。 お前らは俺の質問に答えてればいいんですよ。
王子様到来の予感w
判ってるなら質問するなと言いたい。
多分別人だとは思うが。 王子様 ◆6XD48Lv1aI こいつまだ生きてたんだな。
415 :
NAME IS NULL :2005/05/22(日) 13:04:19 ID:cF+W78bF
SQLiteってまさに俺の理想のDBなんだよなぁ。 ありがとうSQLiteの作者の人!
SQLiteがサポートしているSQLの一覧ってどこかにありませんか?
普通にあるよ。
公式サイトにあるよ
ここにあるよ
それはどこにでもあり、どこにもない。
SQLiteのSELECT文で SELECT hoge, 0 AS zero FROM t_hoge; みたいにやったらエラーになるんだけど、 AS演算子って使えないのかね?
d:\temp>sqlite3 t.db SQLite version 3.2.1 Enter ".help" for instructions sqlite> create table tbl( i integer primary key); sqlite> insert into tbl ( i ) values ( 1 ); sqlite> select i as id from tbl; 1 sqlite> select i as id, 0 as zero from tbl; 1|0 sqlite> create view vw as select i as id, 0 as zero from tbl; sqlite> select zero from vw; 0 sqlite> 使えるよ?
>>422 ごめんできてた。
しつれいしやしたー(><)
424 :
NAME IS NULL :2005/06/28(火) 20:02:20 ID:kCWpMjUF
sqliteって mod_ruby に対応してる?
追記 dbi->sqlite です。
>>392 コンポーネントという表現にすればやたら使い回しが利いていいよ
ttp://edit2000.net/ このサイトの管理人さんここ見てるかな?
リンク切れが目立つので挫折しかかってるなら
なんとか踏みとどまって欲しい。
普及のためにも和訳できる人はがんがって。
428 :
NAME IS NULL :2005/07/08(金) 15:21:25 ID:BmV8B6lB
ログデータを突っ込もうと思うんだけど、sqliteってローテートっぽい事は出来ないですよね? mysqlならmergeテーブルを使えば良いんだけど。
430 :
NAME IS NULL :2005/07/08(金) 17:09:08 ID:BmV8B6lB
なるほど。 こんな感じですか? create table a (i); create table b (i); create table c (i); sqlite> create view abc as select * from a union select * from b union select * from c; sqlite3で、それぞれ10万件ほど数値を入れてselectするとすごく重いです。 何か間違えていますか?
インデックス張ってないというオチはないよね?
432 :
429 :2005/07/08(金) 18:46:47 ID:???
>>430 うん。そのつもりで書いた。重複するレコードも含めて取り出したいのなら
UNION ALLでつないだほうがいいかもしれんが。
10万件ってかなり大きいな。そんな大量レコードとは思ってなかった。。。
SQLiteで扱うにはしんどいレコード数かもね。
重いって言っているレベルが判らないけど、同じテーブルを作ってウチの
マシン(Pen4 2.6G、MEM 512M)でやったテストだと、こんな感じ。
我慢できないレベル、というほどでもない。
SELECT COUNT(*) FROM abc → 3秒
SELECT * FROM abc WHERE i = 1 → 3秒(対象レコード数 1)
ただ、実際の話、全レコードを取り出すの?
そんなに大量のレコードを返されても困ると思うんだけど。
433 :
429 :2005/07/08(金) 18:56:49 ID:???
>>432 テスト環境のOS書き忘れた。WinXP Proね。
434 :
428 :2005/07/08(金) 20:06:24 ID:BmV8B6lB
>>431 こんな感じでインデックスを付けても、やっぱり遅いです。
create index idx_a on a (i);
viewを使わずに直接テーブルをselectすると速いんですけどね。
(viewと比べると、ちょっと遅いという事で、我慢出来ないほどではないです)
>>432 調べて下さってありがとうございます。
テーブルを直接selectすると、すごく速いので、
viewの遅さが気になります。
また、ある程度データが溜って来た時のバックアップが不安ですね。
1DB 1ファイルでDBをまたがってのviewは作れないとなると、
どう運用したら良いか分かりません。
>>434 いかに運用するかを考えて金稼いでるんだよね?
とりあえず2chで聞きかじった話をそのまま運用に持っていくなよ。
sqliteは万能じゃないんで、 ある程度の規模になれば
Oracleなんかも選択肢に入れといた方がいいと思う。
ログの頻度はわからないけど、10万件のログを管理する案件ならば、
sqliteで自作するよりOpenViewとかTivoliを買った方が安くすむかもね。
436 :
428 :2005/07/11(月) 09:40:44 ID:BGxhRhgA
>>435 いや、単に大学のサーバのログを取るソフトを夏休みに作ってみようかと。。。
でも、良いのが出来たら、シェアウェアとかにしたいので、MySQL(GPL)は嫌なんです。
Posgreは遅いし。
437 :
NAME IS NULL :2005/07/11(月) 14:12:00 ID:lZIKbO9U
誰も買わねぇーYO!!
シェアウェアでMySQLをGPLで使用できるの?
>>438 ビジネスモデル的な問題の可能性があるだけで
別に排他じゃないから可能。GPLだとソフト自体の価値よりも
ソフトのサポートに価値を持ってこないと、再配布されるだけだからね。
シェアでライセンスしたものだけ、サポートするってのは
GPLで勝手に持ってけ、でもクレクレ質問厨避けはしたい。
そういうシチュエーションには結構使えるので良いよ。
レスサンクス。スレ違いって怒られそうだけど(^^; シェアウェア代金は、ソフトウェア代金ぢゃなくて、サポート代金と考えれば 問題ないわけだね。 この場合、「レジストしなければ機能に制限あり」や「レジストしなければ 10日しか使えない」ってのはOKなんかな。。。 どのみちGPLなんで、要求があればソース公開になってしまうから、 制限を掛けるのに意味はないってのは判るんだけど。 まぁライセンスうんぬんは抜きにして、アプリとDBを一緒に配布できる SQLiteは便利だよね。 個人的には、PHP5のSQLiteモジュールをさっさとをバージョン3系に して欲しい今日この頃。。。
>>440 銭取るのなら、DBをユーザがある程度選べれるように、
複数サポートしてはどうか。
libmysqlclient ってLGPLじゃなかったかな。 サーバーとは別プロセスのはずだから、GPLの縛りはうけないと思うけど。
MySQL4以降、クライアントライブラリはLGPLからGPLに変更になったハズ
>>440 PHP 5.1 のPDO_SQLiteは3系列(CVSでは最新版の3.2.2)だよ。
デフォルト有効でコンパイルされる。
SQLiteは2.8.xのままで、これもデフォルトで有効。
sqliteをCGIに使うのはさすがに無謀かな?
別に。
C++でバリバリCGI書いてます。 SQLite便利です。 みんなもっと低級言語でCGI書こうぜw
RなDBである必要性を感じさせるCGIってのもなかなか思いつかん Flashでゲームのセーブとかに使ったりするのには便利か
C++って低級言語ぢゃないと思うが。 アセンブラでCGI、ハァハァ。
C++で低級言語と言われる時代になったんだなー。
Cやasmをたぶらかす罪な言語だしな .hはC++でも現役さ
CGIなんて書いてないで全部Apacheモジュールにしてしまうのがおすすめっすよ。
>>448 今ならブログツールあたりかな。
RなDBである必要性というより単に便利だから使われてるんじゃないかと。
453 :
440 :2005/07/12(火) 09:07:13 ID:???
>>444 ありがとうございます。
今後、PDO_SQLiteは、バージョン3、SQLite_xxxは、バージョン2と
住み分けるつもりなんでしょうかねぇ。
PDO_SQLiteって、後々仕様がころころと変わりそうでちょっと不安。
しばらく様子見しておきますです。
HSP向けSQLiteDLLを開発しようとした。 そしたらHSP向けDLLで挫折した。 SQLiteDLL自体は糞簡単だった。 ・・・HSPってどこが簡単なんだ
sqliteって排他制御勝手にやってくれる?
>>455 勝手に、という意味が判らないけどトランザクションを開始すれば
ロックしてくれる。
ロックの種類はデータベース単位(レコードでもなくテーブルでもなく)の
排他ロックしかないけど。
SQLiteの適用範囲を考えると十分だと思う。
テーブルロックが行ロック(あるいはページロック)より優れている点はあります?
>>457 DBを使用する側からすると利点はない。
ロックの範囲が広いほど同時実効性能は低下するから。
同時に多数のレコードをレコードロックする場合はテーブルロックや
ページロックの方が処理が軽い場合があるかもしれないけど。
んで、データベース単位でのロック「しか」できないSQLiteのスレで
何でそんなことを聞くんだい?
>>458 ごまん。なんかロックネタがあたからつい。
>>456 サンクス
readするだけでも他からreadできなくなるのね
462 :
461 :2005/07/14(木) 13:18:17 ID:???
>>461 つまりreadするとき他でもreadできて
writeするときは他はreadできなくなる普通のロックですね
>>463 なんのこっちゃ。試せばすぐ判るだろうに。。。
1. プロセスAがトランザクション開始。この時点でテーブル全体が排他ロック。
2. プロセスBが SELECT。ロックされているので待たされる。
3. プロセスAがトランザクション終了
4, プロセスBの SELECT成功
465 :
464 :2005/07/15(金) 18:32:05 ID:???
まちがえた。 1. プロセスAがトランザクション開始。この時点でテーブル全体が排他ロック。 ↓ 1. プロセスAがトランザクション開始。この時点でデータベース全体が排他ロック。
466 :
461 :2005/07/15(金) 20:44:50 ID:???
>>466 間違ってるところがあればフォローしてやればいいぢゃん
ただの煽りだったらチラシの裏にでも書いとけ
>>464 の動作はタイムアウトが設定されている時の動作と思われ
タイムアウトが設定されていなければ2は即エラーになる
sqliteのコマンドラインユーティリティ、API、各言語のラッパー
ライブラリでタイムアウトは設定できる
SELECT中SELECTできればいいよ
副問い合わせのことかい?
流れから言って違うだろう
今、PHP4 + SQLiteで掲示板とかアクセスカウンター作ってるけど PHP5がもうちょっと普及してくれればデフォルトでSQLiteライブラリが 付いてくるので配布が容易になるのにね。
472 :
461 :2005/07/19(火) 11:41:32 ID:???
>>467 手元で試したけど、こうなるよ。
1. プロセスAがトランザクション開始。
2. プロセスBが SELECT。成功。 (A の変更は反映されず)
3. プロセスAがトランザクション終了
4. プロセスBが SELECT。成功。 (A の変更は反映されている)
>>464 のは SQLite 2 の話ではない?
SQLiteでPostgreSQLのnow()に該当するものってありますか? nowって文字列が入っちゃうんですが。。。
now()は知らんが、sqlite3だとCURRENT_TIMESTAMPが実装されてなかったっけ。
>>474-475 ありがとん。
PEAR::DBを使ってるんだけど、この当たりを自動で吸収はしてくれないんでしょうかね。
>>473 % sqlite
sqlite> create table a(date text,time text);
sqlite> insert into a values(date('now'),time('now'));
sqlite> select * from a;
2005-07-20|06:45:20
sqlite> select date('now');
2005-07-20
sqlite> select time('now');
06:47:23
こんな感じ。日本時間にするには localtime を使うっす。
sqlite> select time('now','localtime');
15:50:02
>>479 たぶん、誰も訳してない or 公開してない。さほど難しい文章でもないので、ちょっと
自分でやってみることをお薦め。
SQLiteのプリペードステートメントって実際にコンパイルされてるの? ストアドプロシージャ不要ですか?
prepaid statement 何かが違う
PostgreSQLもCURRENT_XXXあるだろ
SQLiteCCで見るとNULL値の表示がおかしい(化けてる)んだが、どうなってるんだ?
SQLiteのDBファイル作るときの拡張子って何をつけてます? .db?.sqlite?
漏れは .db にしてたけど、特に根拠はなし。
俺も.dbだな。なんとなく。
漏れは根拠なしに.datなんだが。。。少数派?
たまに嫌がらせを兼ねて.mdbにする
俺は.dbfだな。
何とはなしに.sdb
普段は.dbで、SQLiteであることを示したいときは.sqlt
何もつけてないよヽ(`Д´)ノ ウワアアン!
俺も.dbだな。特に理由はない。
sqlitespyはデフォルトで.db3を認識するみたい
なつかしーな >dBASE III ボーランドに乗っ取られる前って何て社名でしたっけ?
499 :
497 :2005/07/29(金) 03:54:41 ID:???
そういえば俺、SilverFox派だった
>>498 Thx!!
500 :
497 :2005/07/29(金) 04:09:19 ID:???
間違った。 × SilverFox ○ Quick Silver
まずいって何が? 拡張子なんて人間のためだけにあるんだぞ。
でも、さすがに .exe とかにはしたくないよね。w 何か他のアプリで使われてるってんじゃないの? (見たことないけど)
SQLiteCC3 日本語版 v1.00 (2005.07.31) About 画面に SQLite2, SQLite3 のライブラリバージョンを表示するように修正. MSVCP71.DLL を不要にした. SQLite3 のライブラリを v3.2.2 に変更. 新規に DB ファイルを作れない不具合を修正. 新規作成時に SQLite2 と SQLite3 を選択できるようにした.
.exeより.comのほうがまずいぞ。
ここまでの意見を総合すると.dllでFA?
sqIite3.exeにすればいいさ
じゃあ .lite とかどうよ。なんかオサレじゃない?
英数字にこだわる必要は無い。
.@_@
.:-p
>>513 Windowsじゃ":"は使えないよ…
.^_^;
.-____-
.○| ̄|_ (SQLite2) .○| ̄|_=3 (SQLite3)
.orz
>>502 Five: Ok, as a reward for reading this far, here is the dumb thing.
Be VERY, VERY careful what you name your database, especially the extension
For example, if you give all your databases the extension .sdb (SQLite Database, nice name hey? I thought so when I choose it anyway...) you discover that the SDB extension is already associated with APPFIX PACKAGES.
Now, here is the cute part, APPFIX is an executable/package that Windows XP recognizes, and it will, (emphasis mine) ADD THE DATABASE TO THE SYSTEM RESTORE FUNCTIONALITY
http://www.sqlite.org/cvstrac/wiki?p=PerformanceTuningWindows
何かスレが伸びてるから、新しい展開があったのかと思ってきたら
>>521 意訳: WinXPだとsdbはAPPFIXに関連づけされてるからやめとけ。
拡張子とか関連付けとか、おまいらまさかWindowsで使ってるんでつか
>>523 Windows「でも」使ってるよ。これからはクロスプラットフォームですよ。w
Winで開発して、Linuxで運用ってパターンが結構多いんじゃないかな。
おれは.cgiにしてる。 ダウンロードされないようにw
>>524 wxWidgetsとかSDLとか使ってんの?
最近はクロスさせるときはJavaばっかだな
>>526 wつけるまでも無く昔からある小技だよ。
>>528 HypersonicSQLならクライアントで使ってるよ
JDBCが強力でぬるま湯状態な気がしないでもない
SQLiteはCGIと一緒に使ってみたいな
mod_pythonと連携出来たら鬼な気がする
530 :
NAME IS NULL :2005/08/09(火) 00:58:40 ID:D+KA1pWN
PerlでDBD::SQLite使おうと思ってるけど、バイナリって格納できる?
mutexでわざわざ排他制御かけて同時にアクセスしないようにしてやっても。 タイミングによってsqliteが完全停止するんだが。 ちなみにVCね。 使えないなこれ。
MSDEつかえよ。
>>531 お前のコードがバグってるだけだろ。
アホがコードも晒さずにイキがってんじゃねーよ、カスが
transactionかければ勝手に排他されるんじゃないの?
格納する値の型に関する制限がちょっと緩めなところが使いやすいけれど、Alter Table系が弱めだね。 utf-8以外のencodingに対応した関数群の実装も提供されて欲しいなぁ。。
>>530 > PerlでDBD::SQLite使おうと思ってるけど、バイナリって格納できる?
DBD::SQLiteはよく知らないけど、ver3だとBLOB型として格納出来るよ。
ver2の場合はBASE64とかでencodeして放り込むんだろうか?
使った事無いから良くわからない。。
>>532 MSDEはとても良いと思うんだけれど、インスコ作業が必要だよ。。
その点SQLiteならstatic linkにも出来るので場合によっては良いよ。
>>533 バグではないけど、タイミングを再現できないのでよくわからない。
どうも複数のアプリから同時にアクセスするとおかしくなるみたい。
もちろんデータベースはまったく別のもの。
他のタイミングでもなることがあるけど、そこは確実にとまるみたいだね。
多分共有領域の使い方がおかしいんだろう。
とまる構文はdelete from table;ってのが起こり易い
>>534 mutexによる排他に加えてtransactionももちろんやってみた。
結果は同じ。
539 :
538 :2005/08/19(金) 21:47:42 ID:???
ちなみにDLLは3系のものを公式からとってきてやってみた。 1,2両方同じだった。
540 :
538 :2005/08/19(金) 21:54:54 ID:???
あと気になったのがtryで囲ってやらないとエラーが出たときにアクセス違反でアプリが完全に落ちるね これは仕様かな?仕様じゃないならそれが原因に関係してるかもね。
>531 検証したいなぁ コードうpきぼん
再現コードも出さずきちんと問題の検証もできてない段階で、 「使えない」とか「おかしい」とか断定するというのは一体どういう了見なのか。
MSDE……開発「自体」に使えない(試験結果ぶち込むとかBTSのデータぶち込むとか) MySQL……内部で使うだけならいいんだけど。GPL汚染を避けるために金がかかるとなると 金出してくれる人を説得するのがしんどくて_| ̄|○
「多分」とか「だろう」とか、ソースあるんだから調べろよ。 知ったかする奴に限って、検証能力皆無だから困る。
>>538 >>531 なんだろ?デッドロックとかになっちゃったのかな。
あんまりよくわからないけれど、sqlite3_busy_timeoutとか設定すれば良いのかな?
>>544 MSDEが開発自体に使えないって何でだろ?まぁ開発には1万切るSQLServer2000の
developer版を普通は使いそうな気もするけど。
SQLiteは組み込み用の小型DBだから、排他トランザクションが激しく発生するようなのは、
ちゃんとしたRDBMS使った方が良いんだろうね。
>>538 DLLじゃなくてSQLiteをスタティックリンクしろ。
DLLだと、DLLをビルドした時に指定したランタイムによっては
アプリ本体とコンフリクトするぞ。
コンクリートって何?ぐぐってくるけど教えて。
>>541 すでにその部分だけでも数千行規模になってるのでウプは無理だし、重要な内容なのでセキュ意味でも無理
>>542 中身は大きいけど、再現コードをわざわざ書くまでもないくらい単純だからバグだとすぐわかる。
書いた手順で実際にそっちで再現コード書いたほうが早いんじゃない?
詳細は書いてあるし。不明な点があればいってくれ。
>>546 たぶんデッドロックだね。CPU占有がかかってないから。
それも考えていろいろやってみたけど、タイムアウトが作動してる様子はない。
なんでそこまで言い切れるかって言うと
各行でログを出してデバッグしてみたけど,execした時点で停止、以後ログどころかなにも反応しない。
タイムアウト入れてもね。
>>549 スタティックやったときになぜかアクセス違反で根本的に動作しなかったから。
それは特に調査してないけど。
なんとかやってみるよ。
ちなみにベースクラスがwxWidgetsなんでそれが影響してる可能性もあるけど。
>>552 ・ExecではなくPrepareとStepを使え
・スタティックリンクでのアクセス違反ってのは、お前のスキル不足が原因
もし
>>551 =
>>552 だとしたら「再現コードをわざわざ書くまでもない」という発想が異常。
スタティックリンクでアクセス違反になるものを、 DLLにして動く事に疑問を持たないってのが恐ろしいな。
>>555 なんで?
ほとんどのテストや呼ばれてるAPIの把握は既にあるソースで全部わかる。
wxWidgetsだからどうだってことがあったとしても再現コードの有無には関係ないでしょ。
そっちの可能性がでてきたら再現コードじゃなくネイティブコードとして別に書くし。
可能性の低いものを調べてるほど暇でもない。おそらく関係ないと思う。
wxWidetsはソースから読んでるからね。
>>556 持たないさVC用LIBとDLLがセットで用意されてるんだから。
つっこみどころが的外れ。
ソースはあんまり見てないからわからないけど、TCL使ってたからそこら辺の影響かと思ってね。
VC6で用意されたものを拾ったのだからそれでいいさ。
仮にSQLiteのバグだとして、そんな意味不明の報告されても開発者は困るだろ。 趣味か業務か知らんが、オマイもPG開発やっているのならそれぐらい判らないか? また、みんながSQLiteのバグなのか、オマイさんの書いたアプリの問題なのか 切り分けようという姿勢を持っているんだから(興味本位かもしれないが)、 ぐだぐだ言う前に再現コード示したらどうだ?
>>558 趣味だよ。
だから時間があったら再現でもなんでもしてやるさ。書き込んで即効提示できるほどの暇はないさ。
別にバグ報告するために書き込んでるわけじゃないさ。
どうも正常に動いてないし、同じ症状の人がいないかなとか思ったりしただけさ。
再現コードがどうしてもほしいならぐだぐだいってないで気長にまってなさい。
なんか支離滅裂な奴だな。まともに取り合って損した。
スレが伸びてると思ったら夏厨が来てたのか
Sqlite2.xには排他ロックなんてなかったと思ったけど3.xにはあるのか?
>>562 UNIXならfcntl、WindowsならLockFileEx
>>562 マルチスレッドに対応してるけど、気をつけて使いなさい。
unix,linuxはデフォルトでシングルスレッド構成になっています。
って公式に書いてある。
既にあるソースで全部分かるとか言ってる割に、 スタティックリックのアクセス違反すら解決出来ない辺り、 とりあえず相当レベルが低いという事だけは分かった。
リックってなんだ。リンクな。
そもそも、複数アプリから同時アクセスとかの用途だと
組み込み型DBより、素直に普通のRDBMSを選んだ方がいいんじゃないかと。
>>557 > 持たないさVC用LIBとDLLがセットで用意されてるんだから。
> つっこみどころが的外れ。
これを見て、ああこいつダメだと思った。
釣られてみるか。 そもそもそんな凄腕を自慢したいなら自分で検証してみればいいんじゃない? 要するにwxWidgetsも触ったこともないし、触れない。馬鹿を露呈するから文句だけいってよう。 って発想でしょwその方が馬鹿じゃない? 技術的に最高の存在ではないよそりゃ。作れればいいし、バグだらけでも動けばいいよ。仕事でもないし。 駄目でもけっこう。なんか悪いか? 余計なおせわってことに気づかない、自分最高脳内妄想プログラマさんたちは、少しは自分の人間性の 欠落部分に気づいたほうがいいね。 プログラマなんて罵ってなんぼの商売のやつも多いからまあしょうがないんだろうけどw そんなんで人生楽しいか?
>>570 って
>>531 なのか?
>>531 では根拠も示さずに一方的にSQLiteを罵倒して、
技術的に突っ込まれると「人間性の欠落」かよw
お前が自己向上意欲のないカスだって事はよくわかったから、
とりあえず「
>>531 は私のアプリがバグってるだけでした」
って認めて非難を撤回しろ。
意味がわからん、いじでもアプリのせいにして自分で検証して有無をいわさぬ証拠を提示しようとはしないらしい。 しないっていうか出来ないのかw そこまでいうならやってみせろよ。 簡単だろ?テストコード書くだけなんだから。それもできないくせに他人の技術にけちつけてるわけじゃないよね? 他人をけなすくらいだから10分もあればできるよね?ね? アプリのバグと撤回するのはそれやってもらわないとねw プロなら当たり前だよね?こんなこと。証拠もないのに否定してるなんて(プ
夏厨に縁の無さそうなDB板に夏厨が降臨するとは。 せっかくだからコテハンでも付けてくれよ。
自称天才プログラマのあほたちはほっといて作業に戻りますわ。
あ、そうそうソースいじるにしても、DB変えるにしてもここには報告しないから まあ、ぜいぜいあると思ってる頭つかって自分で問題拾ってくださいな。
(´-`).。oO(この厨はそもそもここに何しに来たのだろう?)
この阿呆はどのDB使っても一緒だと思った。
原因を特定せずにmutex使って多重ロックで回避しようというのが、典型的ダメ発想…
みんなスネちゃん弄り杉。
↓というわけで、次の話題どうぞー。
3.2.3 age
>>569 VC用libって付いてないよな。
わざわざ lib /DEF:sqlite3.def ってやって作った記憶がある。
ver3初期はVC用ライブラリ構築用のプロジェクト作ってたが、 だんだん面倒になってきた。 unix系ツール使ってる部分の解決が面倒くさい。
なぜ公式には、Windows用スタティックリンクライブラリが 置いてないんだろう。 まぁ、ソースからビルドすりゃいいんだけどさ。 zip版のソースって、.cと.hと.defしかないから、 VCならプロジェクトは自分で作らないとならない。 しかも、zip版には「experimental.c」が抜けてるし。 (sqlite3_clear_bindingsとsqlite3_sleepの実装ファイル) それはそうと、sqlite3_open16が日本語ファイル名だと 全く使い物にならんのはどうにかならんのか。 (内部でUTF8に変換して、そのままCreateFileAとかに渡してる) os_win.cでUTF8→UTF16→LPCTSTR→CreateFileするように 直したら使えるようになったけど、激しく無駄。
>>585 > なぜ公式には、Windows用スタティックリンクライブラリが
> 置いてないんだろう。
>
VC++6,VS2003,VS2005の違いとか、MFC使うか使わないかの違いとかで
それぞれ別に用意するのも大変だからかなぁ。
> まぁ、ソースからビルドすりゃいいんだけどさ。
> zip版のソースって、.cと.hと.defしかないから、
> VCならプロジェクトは自分で作らないとならない。
>
> しかも、zip版には「experimental.c」が抜けてるし。
> (sqlite3_clear_bindingsとsqlite3_sleepの実装ファイル)
>
ぬおー、そんなのが。でも、実装が別の新規のファイルに移ってたりとか
ありがちなのでmakefileでやった方が間違い起きにくいかも。
誰か書いて。。
> それはそうと、sqlite3_open16が日本語ファイル名だと
> 全く使い物にならんのはどうにかならんのか。
> (内部でUTF8に変換して、そのままCreateFileAとかに渡してる)
>
> os_win.cでUTF8→UTF16→LPCTSTR→CreateFileするように
> 直したら使えるようになったけど、激しく無駄。
>
ほんとだ。。sqlite3_open16の中でもう変換しちゃってる。。
sqlite3OsOpenReadWriteに行き着くまでに色々と処理あるし
そこまでを一通りで楽に書きたいんだろうな。。
LPCTSTR って const TCHAR*だからそれより、UTF16ならconst wchar_t*だから
LPCWSTRでCreateFileW呼ぶべきかと思った。
あとsqlite3_open16じゃなくてsqlite3_open呼んでうまくいったら、
明示的にPRAGMA encoding = 'UTF-16' 呼ぶので回避できるかな?
(sqlite3_open16の実装見るとそんな事しかやってないので)
>>586 >LPCTSTR って const TCHAR*だからそれより、UTF16ならconst wchar_t*だから
>LPCWSTRでCreateFileW呼ぶべきかと思った。
UTF-8→UTF-16の時点でCreateFileW呼べばいいってのはそうなんだが、
それだとNTでしか動かなくなるし。
LPCTSTRを使えば、UnicodeビルドとMBCSビルドで使うAPIを適切に
切り替えられるようになる。
>あとsqlite3_open16じゃなくてsqlite3_open呼んでうまくいったら、
>明示的にPRAGMA encoding = 'UTF-16' 呼ぶので回避できるかな?
sqlite3_openの方も問題ありなんだよね。
APIドキュメントには「UTF-8のファイル名を与える」って
書いてあったから、律儀にファイル名をUTF-8に変換して与えたら、
見事に文字化けファイル名の出来上がり。
つまり、sqlite3_openのドキュメントは間違っていて、
実際は「MBCSのファイル名を与える」APIになってる。
何が一番問題になるかといえば、SQLはUTF-8で与える仕様だけど、
"ATTACH 日本語.db"みたいなファイル名を扱うSQLコマンドを
UTF-8でsqlite3_exec等に渡しても動かないってこと。
TICKETもらってos_winの改善案を提案するかな。
>>587 > UTF-8→UTF-16の時点でCreateFileW呼べばいいってのはそうなんだが、
>それだとNTでしか動かなくなるし。
> LPCTSTRを使えば、UnicodeビルドとMBCSビルドで使うAPIを適切に
>切り替えられるようになる。
MBCSビルドの場合はUTF-8→MBCS変換で、UNICODEの時にはUTF-8→UTF-16変換
とコード切り分けているのであればそれで大丈夫かな。
> sqlite3_openの方も問題ありなんだよね。
> APIドキュメントには「UTF-8のファイル名を与える」って
>書いてあったから、律儀にファイル名をUTF-8に変換して与えたら、
>見事に文字化けファイル名の出来上がり。
>
> つまり、sqlite3_openのドキュメントは間違っていて、
>実際は「MBCSのファイル名を与える」APIになってる。
> 何が一番問題になるかといえば、SQLはUTF-8で与える仕様だけど、
>"ATTACH 日本語.db"みたいなファイル名を扱うSQLコマンドを
>UTF-8でsqlite3_exec等に渡しても動かないってこと。
つまりファイルネームはASCIIの範囲内にしとけと。
> TICKETもらってos_winの改善案を提案するか
どちらにしろos_winにはUTF-8でくるという仕様ではあるので
os_winだけの改造になりそうだね。
実装が変わると利用するアプリ側が今度はちゃんとUTF-8 or UTF-16で
渡さないと駄目だね。
3.2.4 age
590 :
562 :2005/08/25(木) 04:55:19 ID:???
あー、レスくれた人ありがとう 3.xって結構2.xと違うんだな ずっと2.xでやってて特に問題も無いのであまり勉強してなかったよ
SQLiteのDLL版って何でヘッダファイル置かないんだろうか。 仮宣言をいちいちしなくちゃいけなくてめどい。
src落としてsqlite3.h使うといいとおもうよ
>>591 DLL版なんて飾りなのです。
偉い人にはそれが分からんのですよ
3.2.5 age
結構ハイペースにリリースされてるんだなぁ
596 :
NAME IS NULL :2005/08/31(水) 16:40:42 ID:QcMvjbbs
SELECT COUNT(DISTINCT hoge) FROM table; ってやると、syntax error になるんだけど(3.2.2) これって仕様? それともオレだけ? なんかいい方法あったら教えて下さい。
>>596 select count(*) from (select distinct hoge from table);
かな。
超サンクス.
カッコ内にいれた瞬間にそれは福問い合わせに修飾してるんだから そういう仕様は不便でも正しい面があるね
吹く問い合わせ
福問い合わせって縁起がよさそうだね
福問い合わせでNULLがかえってきたら悲しい。
服縫い合わせ
厨房が沸いてる
河豚食い合わせ
SQLiteManager バージョン 1.1.1を使用しています Warning: mb_ereg() [function.mb-ereg]: mbregex compile err: unmatched close parenthesis in /include/ParsingQuery.class.php on line 399 エラーがでるのですが、原因がわかるかたいらっしゃいますか? OS:FedoraCore3 SQLite バージョン 2.8.14 / PHP バージョン 5.0.3
>>606 いや、そのエラーのとおり、正規表現の括弧の対応が取れてないんじゃない?
そのあたりのコードを読み直してみたら?
カリカリチューニングの仕方を教えてください。
ガリガリ君なら上げます
先週本屋でSQLite入門っていう本を見つけた
612 :
NAME IS NULL :2005/09/14(水) 09:35:36 ID:Zl9QgQIJ
レビューキボn
それさきおとといぐらいに買ってきたよ。 PHPだとblogのサンプルが乗ってた。あといろんな言語から使う方法も書いてあった。 とりあえず私はPHPだけで使いたかったので半分ぐらいしか読むとこ無かったです。 あとでほかの言語で使おうとか思ってる人にはお勧めかもしれません。 それとサンプルのコーディングの仕方が特殊? (というか趣味グラマなんでよくわかってないんですけど) <?php function hoge() { ?> HTML... ... ... <?php } function huga() { ?> HTML... ... ... <?php } こんな感じでした。
SQLiteも入門書が出るまでになったか。 PHP5がもっと普及すればSQLiteも普及するんだがな。 肝心のPHP5が・・・
blog程度の入門書って丸で役に立たないな
>>613 PHPは良くわからんが、早い話がwriteLineを必要行数分繰り返してるだけだと思うよ
>>613 PHPのプログラムの書き方の中では余りスタンダードな書き方ではないな。
PHP(ロジック)よりもHTML(見栄え)に重点をおいた書き方だから。
PHP+SQLite本としては「PHP5徹底攻略」を薦める。
ただこの本はPHP"5"本としては個人的には物足りない内容。
617 :
NAME IS NULL :2005/09/15(木) 11:33:29 ID:CNPf8Lex
>>613 目次見た感じだと、「いろんな言語」の中に、肝心の C/C++ が無い気がするのだが、
激しく片手落ちじゃね?
げげ、C/C++はないですね。でもなでしこはあります。
>>617 XREAには、一部PHP5の導入された鯖がある。
全部じゃないから注意しる。
あとはVPS鯖借りて自分でインストールするとか。
>>618 フリーなデータベースエンジンの入門書って、どれもこれも似たような傾向があって、
載っているのはPHPかPerlで掲示板かBlogを作るだけのサンプルだったりするから、
C/C++の話なんて、まず絶対に出てこない。なぜなら、そこらへんの普通の
CGIの使えるサーバーって、Cコンパイラ使わせてくれないもん。
SQLiteは、アプリケーションに組み込めるというのが面白いところだと思うけど、
残念ながら、入門書にそこまで期待はできんでしょう。
>>622 とりあえず、お前が眞鍋かをり好きだということは学べた。
>>622 SQL基本を勉強したいなら、特定のソフト、とくにフリーのデータベースの入門書は
避けたほうがいいよ。
フリーのデータベースが悪いという意味では絶対ないんだけど、残念ながら、
その手の解説本は、かなり多くの場合、ソフトのインストール方法と、PHPやPerlなどから
呼び出して使う場合の応用例ばっかりにページをさいていることが多くて、SQLそのもの
やデータベースの基本についての説明は、ほとんどないか、あっても杜撰な場合が多い。
本屋さんで、普通に「SQL入門」「SQLハンドブック」「SQL解説」みたいに、そっけない
題名になっている本を立ち読みして、説明の文体が自分にあいそうなもの(これ重要)を
買うか、自分の住んでいる市の図書館のホームページで「SQL」という言葉を含んでいる
題名の本を検索して適当に数冊借りてみるほうがいいと思う。
>>624 サンクス、やっぱSQLの入門本から始めたほうがいいかぁ
626 :
NAME IS NULL :2005/09/17(土) 20:23:42 ID:ZRoePNYb
>>620 サンクス、やっぱりVPS借りて自分でインスコするのが一番よさげですね。
試しにYahooウェブホスティングのライトプランでSQLite動かしてみた。
--ソース--
$con = sqlite_open('/****/htdocs/data/hoge.dbf');
sqlite_busy_timeout($con, 10000); //10秒
$results = sqlite_array_query($con, "select * from sample");
$errno = sqlite_last_error($con);
sqlite_close($con);
if ($errno != 0) printf("[%d] %s", $errno, sqlite_error_string($errno));
--実行結果--
Warning: sqlite_query() [function.sqlite-query]: database is locked in /****/htdocs/test.php on line 21
[5] database is lock
何故かデータベースがロックしてるエラーが・・・orz
627 :
NAME IS NULL :2005/09/17(土) 20:27:49 ID:ZRoePNYb
>>626 またsqlite_open()してすぐsqlite_close()してみると
--ソース--
$con = sqlite_open('/****/htdocs/data/hoge.dbf');
sqlite_busy_timeout($con, 10000); //10秒
$errno = sqlite_last_error($con);
sqlite_close($con);
if ($errno != 0) printf("[%d] %s", $errno, sqlite_error_string($errno));
hoge.dbf は作成されるがファイルサイズが 0バイト。
これってひょっとしてデータベースの作成に失敗してます?
--phpinfo()の結果--
PHP Version 5.0.4
(省略)
SQLite
PECL Module version 2.0-dev $Id: sqlite.c,v 1.146.2.3 2004/09/26 01:41:40 wez Exp $
SQLite Library 2.8.14
SQLite Encoding iso8859
>>626 テーブルはあらかじめ作ってあるんだよな?
とりあえず、同じプログラムをローカルのPHP環境で実行してみれ。
それでうまく行くなら、Yahooの問題。
629 :
NAME IS NULL :2005/09/18(日) 15:03:14 ID:/TphbGBL
3.2.6 age
お。このスレで話題になった COUNT(DISTINCT) がサポートされたね。
drh は絶対このスレ見てるな。
633 :
NAME IS NULL :2005/09/19(月) 15:13:05 ID:ZFm7QfVl
>>628 うん、テーブルは作ってある。ローカルでもテスト済み。
ただ、ローカルの環境がWindowsだったのでFreeBSDとバイナリ互換ないのかなとおもって、
データベースを最初から作り直すことにしたんだが、 create table でも同じ現象が発生。
どうやらビージータイムアウトして database is lock が返ってきているみたいなので
sqlite_busy_timeout() で時間を延長してみたがやっぱりNG。
・・・自分でDBもどき作るしかないのかね・・・鬱だ・・・orz.
634 :
NAME IS NULL :2005/09/19(月) 20:03:45 ID:qEdHNoTH
3.2.6でos_win.cの実装が多少変更されたが、ただ単に NTでは問答無用でUnicode系のWin32 APIを使うだけみたいだ。 UTF-8文字列をMBCS系のAPIに渡したり、MBCS文字列を UTF-8として処理するのは変わらず。 いいかげん、UTF-8 <> MBCSだってことに気付けYO!
sqliteはWCS(のみ)で使うのが正しいのだと思う。たぶん。
>>636 3.2.6以降は、sqlite3_open16等の関数だけを使えば
NTなら日本語ファイル名が使えるようになったが、
Win9xでは結局ダメ。
NTでの挙動
sqlite3_open16(UTF-16)→内部でUTF-8に変換
→os_win.cで再びUTF-16に変換してCreateFileW
→OK
9xでの挙動
sqlite3_open16(UTF-16)→内部でUTF-8に変換
→os_win.cでCreateFileAにUTF-8を渡す
→文字化けファイル名のできあがり
>>637 うん。。Win9xは駄目だね。
うちはsqlite使うものはWin9xは対応しない。(要求もあまりないので)
>>637 そこまで調べてるんなら、
パッチ作って送ったらいいんじゃね?
>>635 os_win.c見てみたけど、NTの場合に問答無用でW系のAPI使ってるわけではなくて、
utf8ToUnicode関数でWide文字列に変換してから処理してるから大丈夫じゃない?
非16系の関数が、3.2.5まではMBCSのファイルパスを受け取ってたけど、今度からは
utf8にして渡さないとね。
>>640 >>637 あと、本来はsqlite3_openは「UTF-8のファイルパスを受け取る」
と規定されてるので、MBCSじゃないと動かなかった今までは
実装が間違っていたということ。
Win9xでは、3.2.6でも結局MBCSで渡さないと動かんけど。
642 :
640 :2005/09/23(金) 23:36:02 ID:???
>>641 (637)
>3.2.6以降は、sqlite3_open16等の関数だけを使えば
>NTなら日本語ファイル名が使えるようになったが、
sqlite3_open16等の関数「だけ」なんて事は無いかと思った。
sqlite3_openとかでも3.2.6からは大丈夫。
どっちも中で使ってるのは、utf8食うopenDatabaseだから。
(sqlite3_open16では)
>あと、本来はsqlite3_openは「UTF-8のファイルパスを受け取る」
>と規定されてるので、MBCSじゃないと動かなかった今までは
>実装が間違っていたということ。
はい。それはその通りで過去に教えてもらいますたね。
>Win9xでは、3.2.6でも結局MBCSで渡さないと動かんけど。
Win9xはW系のAPI無いしで、16系のは使わないようにすれば
良いだけだからあまり大した問題には感じないなぁ。
UTF16->MBCS変換してファイルコールする実装にしてないのは
まぁさぼりだろうけど。とにかく内部ではutf8で通して楽したいってのが
開発者の考えだろうね。(ちょっと動作的に無駄が生じるけど)
643 :
642 :2005/09/23(金) 23:42:54 ID:???
>>642 >sqlite3_open16等の関数「だけ」なんて事は無いかと思った。
>sqlite3_openとかでも3.2.6からは大丈夫。
>どっちも中で使ってるのは、utf8食うopenDatabaseだから。
>(sqlite3_open16では)
ちょっと書き損ねた。
sqlite3_open16では、中で引数のファイルネームをUTF-16からUTF-8に
変換して、openDatabaseを呼んでいると。
自分は16系のは日頃使ってないけど、sqlite3_openで、非ASCII文字が
入ったパスのファイルをきちんと利用出来ているよ。
635の、
>UTF-8文字列をMBCS系のAPIに渡したり、MBCS文字列を
>UTF-8として処理するのは変わらず。
っていうのが残っていたら3.2.6で残っていたら問題だけれど、
os_win.cとか見ても問題無いかと思ったので、640を書き込んだ。
(Win9xは、、別にいいでしょ。。)
644 :
642 :2005/09/23(金) 23:50:50 ID:???
>>637 >
> 9xでの挙動
> sqlite3_open16(UTF-16)→内部でUTF-8に変換
> →os_win.cでCreateFileAにUTF-8を渡す
> →文字化けファイル名のできあがり
>
って、これが駄目なのか。。
Win9xで使う時にはMBCSでsqlite3_open呼ぶとかは…汚いか。。
ちゃんとWin9xでも動かしたい人は、os_win.cの中でUTF-8->MBCS変換の
処理を入れると…。
すんまそん。
645 :
642 :2005/09/24(土) 00:08:57 ID:???
結局、3.2.6のマルチバイト文字の扱いの問題は、os_win.cで、 utf-8をutf-16に変換出来ない時に(NTの時にしか変換しない) MBCSを受け取るA系のAPIを、utf-8を渡して呼び出していると。 なので、 NT系 sqlite3_open OK sqlite3_open16 OK 9x系 sqlite3_open Not OK (バグ回避に過ぎないけどMBCSで呼び出せば使えるかも) sqlite3_open16 Not OK だと思う。
copy復活マダー?
3.2.7がでとるな。
mysqlのマルチプルinsertほしいなぁ。
>>648 スピードの問題だけであればトランザクションの中に入れるだけで
100倍くらい速くなったよ。
>>649 うん。そうなんだけど、さらに高速にならないかなぁって。
最近パフォーマンス厨なもんで。
>>650 sqlite3* hDB;
sqlite3_open( "hoge.db", &hDB );
sqlite3_stmt* hStmt;
sqlite3_prepare( hDB, "INSERT INTO hoge VALUES(?)", -1, &hStme, NULL );
int numbers[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
for( int i = 0 ; i < sizeof( numbers ) / sizeof( int ) : ++i ){
sqlite3_bind_int( hStmt, 1, numbers[i] );
sqlite3_step( hStmt );
sqlite3_reset( hStmt );
}
sqlite3_finalize( hStmt );
sqlite3_close( hDB );
>>651 のfor文の前後からBEGIN TRANSACTIONと
COMMIT TRANSACTIONがぬけてた。
補完よろしく。
それはどのへんが高速化のポイントなの?
prepareしてる辺りじゃないの。
なるほど。 それならわざわざコードを出さなくてもそう説明してくれた方がわかりやすいね。
656 :
NAME IS NULL :2005/10/06(木) 17:41:00 ID:BBu9gQvT
>>656 その書評を見る限りでは・・・ だめなんじゃない?
率直な話、PHPって書いてある時点で、たいていの本は「ダメ警報発令」だと思う。
「何々SQLサーバーの入門書」と銘打っておきながら、PHPが全面に出ている本は、
結局のところ、「何々SQLサーバー」そのものに関する固有の情報や、他のサーバーに
ない特徴といったものは、ほとんど載ってない場合がほとんどだから。
もちろん、これは一般的な傾向であって、この本がそうだと確認したわけじゃないけど。
SQLiteがTcl/Tkコミュニティから生まれたものだということが無視されて PHPとPythonばかりフィーチャーされている件について・・・
>>658 SQLite のサイトを見れば、tclとの関連が深いことはすぐわかると思うんだけど。
ごめん知らなかった。
tarball 開いたら Tcl のスクリプトがぎょーさん出てくるがな。
windows用に sqlite3 の zip を落としてくると、中には .exe 一個だけ しかなかったり・・・
663 :
NAME IS NULL :2005/10/10(月) 17:36:57 ID:U3RRRrud
>>662 dllさがしている?それなら別のzip
データベースのサイズに関してです。
ttp://www.sqlite.org/whentouse.html > For smaller databases, the amount of memory required is not a problem,
> but when database begin to grow into the multi-gigabyte range, the size
> of the bitmap can get quite large. If you need to store and modify more than
> a few dozen GB of data, you should consider using a different database engine.
とあります。要は「数GBオーダーのサイズになったらそろそろ黄信号」つうことですよね?
ちょうど数GB程度になるであろう運用を考えているのですが、sqliteを採用するかどうかで
迷い中です。
詳しい方、あるいは似た状況の方、取るべき指針について御教示下され。。。
>>665 詳しくないけど突っ込んでみる。
10GBでも2.5MBだけどメモリ不足なの?
組み込みDBでGはきついんじゃないかな。 素直にRDBMSにした方がいいと思われ。
668 :
665 :2005/10/12(水) 03:35:57 ID:???
>>666 うわああああすみません!ごめんなさい!大ボケでした!
ケタ3つ間違えて、10GBで2.5GBと見積ってました
2.5MBのメモリ量なら、全く問題ありませんです・・・
>>667 こちらの方にも申し訳ないです、私めの認識+記述不足でした。
組み込みでなく、リソースがそこそこあるPC上での運用なのであります。
お二方、御迷惑おかけしまして大変申し訳ありませんでした orz _no
「RAM >= 256MB、HDD豊富なPC上で、10GB程度のsqlite DB運用は問題無し」
がFAということでよろしいでしょうか・・・?
>>665 知識のないオレだけど、英文の内容を見る限り、別のデータベースエンジンを使うことを
検討すべきだというのは、「a few dozen GB」以上になった場合と書いてある。a few dozen
ってのは「数ダースの」という形容詞だから、「数ギガ」ではなく「数十ギガ」だと思う。
つまり、665さんの見積もり「数ギガ」に対しては、まだ一桁の余裕があるんじゃない?
670 :
NAME IS NULL :2005/10/12(水) 07:42:54 ID:RxTmnOMj
SQLiteの同時接続数は、 コンパイル時に10に制限されているとのことですが これを設定ファイル等で増やす事はできないのでしょうか? 10というのはいかにも少なすぎる気がするのですが…。
同時接続の意味が違うような気がする。
672 :
665 :2005/10/13(木) 09:42:59 ID:???
>>669 コメントありがとうございます。
言われてみれば確かに「一桁の余裕」ですね。安心感が生まれてきました。
sqlite採用の方向でいってみます。どうもありがとうございました!
>>671 MySQLで言うmax_connectionsのことではないのでしょうか?
max_connectionsはどこで設定できるのですか?
何と何を接続するんだ?
もしかして、もともとコネクションという概念自体がないんですか? DBなのにtoo many connectionsエラーが出ない? それはかなりありがたいですね!
676 :
671 :2005/10/14(金) 00:00:55 ID:???
>>675 えっと・・・ 間違ってたらゴメン。(おかしかったら突っ込んで>有識者の皆さん)
SQLiteって、基本的には、
「パソコンなりサーバーなりのローカルなディスクの上にファイルを作って、
そのファイルの中のいろんなデータをSQLの命令で検索する。」
という仕事をするためのライブラリで、たいていの場合、ひとつの
アプリケーションがひとつのデータベースのファイルを独占的につかう
のではないの?
(ひとつのデータベースファイルの中に、複数のテーブルを持つことは、
当然できる)
デーモンが常駐するわけでもなし、ソケットでクライアントとサーバーで接続すると
いうわけでもなく、アプリケーションのプログラムが自力でファイルを読む。
DB固有のユーザーという概念もない。単純にアプリがファイルを読み書きするときに
OSで設定されているアクセス権にしたがって処理が進む。トランザクションは
ファイル、つまりデータベース全体のロックで実現している。
で、必要なら、いくらでもSQLiteを内蔵しているアプリケーションを立ち上げて
しまえばいいのではないかと・・・
SQLiteでいう「同時接続数」は、通常はひとつのデータベースファイルを使うのに
対し、「必要に応じてもっとたくさんのファイルも使えますよ、その上限はいくつ
までですよ。」という意味の同時に扱うことのできるデータベースの数のことで、
クライアントがサーバーに接続するときの上限の数ではないと思う。
MySQLのmax_connectionって、サーバーが子プロセスを起動するときの上限の
設定のことだよね? たぶんSQLiteと言葉は似ているけど意味は全然違うと思う。
>>676 たぶん正しいと思うんだけど、複数のアプリケーションが同時にひとつのファ
イルにアクセスできるから「独占的」という表現はあまり正しくなさげ。
ちなみに、書き込みは 2.x だと flock か何かでファイル全体のロックをして
いたけど、 3.x はそのへんもうすこし緩和されているらしい。
まあ憶測であれこれ考える前にまずはドキュメント嫁と。
ドキュメント嫁言いたいだけだろ。
680 :
NAME IS NULL :2005/10/19(水) 19:13:28 ID:K3Pdo6yl
681 :
NAME IS NULL :2005/10/21(金) 20:37:20 ID:uTNs7eq1
sqlite3_reset()とsqlite3_clear_bindings()の違いって何?
682 :
NAME IS NULL :2005/10/21(金) 22:01:01 ID:aCtEsJXz
>>681 resetは実行結果(column)の消去、clearはパラメータ(bind)の消去
684 :
NAME IS NULL :2005/10/28(金) 10:28:42 ID:IedZDhzg
sqliteのロゴマークがtcl/tkのロゴマークと同じなのに誰も指摘しない件について
よくわかんないけどtcl/tkって何?
GUIツールキット
ADO.NET Data Provider for SQLite なんだけどさ ソースコード軽く眺めてたら、Unix系とWindows系で処理が分かれてる。 SQLite.NETのUtil.csで。 これってつまり、monoにもそのまま対応してるってことかな?
よくわかんないけどmonoって何?
オープンソース版 .Net
ReadMe.txtに Version 0.20 からのMono on UNIXサポート追加が書いてあるね。
>>690 てゆうか、monoのクラスライブラリに Mono.Data.Sqliteっていうのがあるぞ
消しゴム
( ゚д゚)ノ ハイ!質問! SQLite3 で win <-> Linux(unix) 互換性ってあるの? Linux or FreeBSD に sqlite3 インスコして `sqlite3 test.db` やって create table hoge(id, kao); insert into hoge(id, kao) values(1, 'ヽ(´ー`)ノマンセー'); ヤったあとwin機に test.db もってって、そっちで運用したいんだが。 要はDBファイルに互換性があるかどうかなんだが・・・。
文字コードに気をつけりゃ出来るよ。
あるよ。 別アーキテクチャだったら、試した事無いから分からんけど。
(6) My linux box is not able to read an SQLite database that was created on my SparcStation.
You need to upgrade your SQLite library to version 2.6.3 or later.
<<
http://www.sqlite.org/faq.html なので、最近のSQLiteはエンディアンの問題も解決されているらしい。
700 :
696 :2005/11/03(木) 17:43:09 ID:???
>>696 すでにレスついているけど、ファイルは互換性あるね。とってもうれしい。
サクラウェブで借りているFreeBSDのサーバー上で、PerlのSQliteモジュールを
使ったプログラムを動かしてみて、できたデータベースファイルをFTPで
ダウンロードしてWindowsXP上のSQLiteで読んでみたら、何の問題もなかった。
702 :
NAME IS NULL :2005/11/05(土) 15:28:06 ID:lUG2HX7F
はじめてPHPをさわりますが 37 $db = sqlite_open('./SQLiteManager/pop_db'); 38 if ($db == FALSE) { 40 echo "データベースに接続できませんでした"; 41 } else { 42 echo "データベース接続"; 43 $sql = "select * from link"; 44 $result = sqlite_unbuffered_query($db, $sql); 結果 データベース接続 Warning: sqlite_unbuffered_query() [function.sqlite-unbuffered-query]: no such table: link in C:\Apache Group\Apache2\htdocs\view.php on line 43 とでるのですが、何が原因でしょうか
PHP板の方がいいと思うけど。 エラーメッセージが "no such table: link in ...略 on line 43" だから "select * from link" で指定している link という名前のテーブルが存在しないんでしょ。
>>702 だから no such table: link なんじゃないのかね?
705 :
NAME IS NULL :2005/11/05(土) 17:25:23 ID:lUG2HX7F
703,704 ありがとう。できました。たすかりました
706 :
NAME IS NULL :2005/11/11(金) 13:06:08 ID:v8h/gUt4
gooブログリーダーにPythonとSQLiteのDLLが入ってたage
gooブログリーダーってのに入ってると何がどう変わるの? PythonのDLLとSQLiteのDLLなの?PythonのSQLiteラッパーなの? なにがなんなの?
>>707 そこはそんなに突っ込むトコじゃないと思われ。
単なる「『こんなところにも SQLite』ネタ」でしょ。
glucoseだっけかなgooのrssリーダ 話題としては去年のものだ こんなところにもSqliteっていうのなら最近だと画像アルバム系ソフトとかにも使われてる
>>709 画像そのものをDBに入れてるの?
バイナリ保存って出来たっけ?Base64なら納得だけど。
>>710 普通に考えて画像ファイルのパスとかのメタ情報とかじゃねーの?
と
>>709 じゃない俺が答えてみる。
SQLite の DB にバイナリを入れるのは問題なくできるよ。
>>711 そうなのか。
昔は数字と文字列との違いがないような処理系だったのに
そこまで変わったんだな。
数字と文字列との違いが無かった古の昔からそうだったわけだけど。
ファイルの拡張子は何にしてる?
検索すべきだった、スマソ。
よし、これからは皆liteに統一しろ。
断る
拡張子は .xls にするのが普通だろ。 っていうかExcelでワークシートとして読み込めるの知らなかったのか?
テキストファイルなんだから .txt でいいじゃん
ちょっとまて、 719 と 720 は何の話をしているんだ?
馬鹿話
723 :
NAME IS NULL :2005/11/19(土) 11:39:05 ID:PHOWnBt0
hoge.mysql
.hage
いつからカツラだと知っていた!?
>>719 え?ウソだろ!?
でもそうだったらめちゃめちゃ便利じゃん
とか思いながら開いてみた。
・・・つられた。。。
乙
ごめん。開けるのはACCESS2003だった。 だから拡張子.mdbだ。
おもろない。
.jspにしますた
んじゃおれは.aspxで
漏れなんか .exe だど。
youjo.rarにしますた
`_
735 :
NAME IS NULL :2005/11/25(金) 11:18:06 ID:oROAHEdA
sqlite 使える レンタルサーバーで安い所しりませんか
・PHP5が使える鯖(PHP専用) ・DBIとDBD-SQLiteが使える鯖(Perl専用)
>>735 まだ試してないけどさくらには、
DBD-SQLite-1.09
が入っている。
738 :
NAME IS NULL :2005/11/26(土) 19:46:34 ID:stpPP/kh
SQLiteManagerってDBファイルをドライブのルートに作るわけ? パスとファイル名がつながった名前でできる。なんか変。。。。 とりあえず、フィールドが16ある約2000行のCSVファイル(文字コードEUC)を インポートしてみたらDBファイルの出来上がり。 ファイルをリネーム、移動して、ネットで拾ったHTMLテーブルに表示する PHPスクリプトをコピペして使ったら、あっけなく動作・・・・ データベースなんて触ったこともないド素人なのに、あら簡単。 で、少し感動。 でも、SQLiteManagerって既存のDBファイルを開けないのかぇ?よくわからん。 これじゃデータの管理できないじゃん。 で、ただ今、挫折中 orz
>>735 サクラインターネットでも使う? 一番安いコースはPHPは使えないけど、
でもsqlite を組み込んだperlのモジュールがある。
あと、Cコンパイラが使えるから、やりたいなら自分でソースをコンパイルする
こともできるはず。
SQLiteManagerって名前のソフトは商用のスタンドアロンのやつとPHPのやつがあるんだけど。
Javaでよけりゃ作ってやろうか? JDBCDriverがあればだけど。
>>740 PHPのやつです。参考になるアドバイスいただけるとうれしいス。
Mozilla プロジェクトのカレンダーアプリケーションソフト Sunbird は 0.3 alpha1 から SQLite 組み込みだそうな。
じんわり浸透していくな。 なんか嬉しい。
746 :
738 :2005/11/29(火) 23:57:17 ID:???
SQLiteManager(PHPのやつ)で新規データベースを作る時、または既存の データベースをロードする方法、発見しました!!!! データベースへのパスを参照し D:\www\myhome\database.db とか表示されたら「\」を「/」にマニュアルで 置き換えます。 D:/www/myhome/database.db こういうふうに で、指定場所にデータベースファイルを作成したり既存のファイルを SQLiteManagerにロードしたりできました!!!! SQLiteManagerつかえるじゃん。やったー!
なんでSQLiteは使いやすいのに普及しないんだろう? MySQLが使用できないレン鯖でMovableTypeを入れようとする人とかに 結構需要はありそうに思うんだが。 せっかくブログブームでDBに初めて触れる人も出てきたのに SQLiteはそのブームに乗り遅れた感じがするね。
DBを使う用途ってのが個人だと少ないからな
バージョンアップの頻度が高すぎて安心して使えない。 パイプでSQL流して結果をファイルにリダイレクトする程度ならいいが、 組み込みにはしたくないな。
2系が枯れるのを待てばいいじゃん。
3系が枯れるのを待って 2系は消えるのを待てばいいと思う
3系は開発バージョンだろ。あと数ヶ月したら3.3が出るみたいだし。 なかなか枯れないと思うよ。
MySQLなみに普及しようと思ったら MySQLなみに世間にもまれなければならない。 いまはまだSQLiteは開発途上で一部のマニアのオモチャになっている段階。
普及するってのがどの程度を指すのかが分からんな。 それなりに採用してるソフトは出てきてるみたいだが。
最近の共用レン鯖ではインスコされてるね。
>>747 あれはMySQLを入れたいんじゃなくて、MTを入れたいだけだし。
MySQLも含めたDBを使おうとはしてないよ。
>>748 データベースの概念が難しいからね。
アクセスさえも使えずに、エクセルでセルを操作する程度が一般人の思考。
>>754 今の所マカが人柱に成ってるだけだしね。
デスクトップ検索とブラウザのRSSサポートとか。
SQLiteのこの手軽さがたまらん(*´Д`)
>>757 アクセス廚のように始めのうちはいいけど後で困るんだけどね(w
アクセスは1万件で問題が出始めるんだっけか。
sqliteは100万件ぐらいは耐える?
アクセスはっていうより.mdbはっていうなら同意
耐えるってどういう意味?
苦しさ・悲しさなどに屈せず我慢する。こらえる。 他から加えられる力に負けずにもちこたえる。
>>761 こんな厨房レスいらんねん。おかげでパフォーマンスの話題が途切れた。
で、おまいらどのくらいのレコード数処理させてるの? すでに遅くなる所まで使い込んだ香具師居る?
100万レコード、ファイルサイズで100Mバイトくらいまでは普通に使ってるけど 特に遅くなる様子はないよ。
正規化をちゃんとすれば100万件くらいはいけるんじゃないかなあ
20万件で100MB 数万件程度ならSQLiteもMySQLも速度的にはたいして変わらんが、、、
つまりsqliteに限らず、正規化できてればMySQLと変わらないのかな? アクセスはエクセルの延長的に使われるので正規化されずに使われそうだけど、sqliteはそうでもないかな?
prepareされてればどのDBでも似たり寄ったりの性能だろ?
教えて君ですんまそ。即答できる人がいたらおしえてください。 SQLite2とSQLite3のデータベースの形式に互換性がないのはわかったけど libsqlite3(つーかSQLite3のライブラリ)でSQLite2のデータベースを触ることはできるの?
無理
なんでそんなことを? 2でexportして3でimportすればええやん。
色々しがらみがあって2のままでないといかんてこともあろうよ。 一々疑問に思うなってばよ。
だったら2のライブラリ使えよ。 大したサイズじゃないんだから、両方入れりゃいいだろ。
しがらみって何だよ? ずっと2のままで使えばいいじゃん。
776 :
NAME IS NULL :2005/12/20(火) 03:36:53 ID:sxnJeXo0
バージョンアップきたあああああああああああああああああ!!!
しょっちゅうあることだしぃ
全体的にバグ出具合はどんな感じ? やっぱ、あるでしょ、少しぐらいは。
どんな感じってどういう意味? なんか最近抽象的な聞き方する人が多いな。
時代はエスパーを求めているってことだろw
なんだおまえら?
1ファイルの容量が1MBなんだけど、パフォーマンス的には問題ある?
>>782 全く問題ない。100Mくらいまでは普通に使ってる。
レコード数にも依るかもな。
XOOPSがSQLiteで使えればよいのになぁ。
改造は可能
ファイルサイズ316Mでテーブルが4000以上、レコード数は5万以上のテーブルもあるな。 JavaScriptで使っています。 おいらとしては問題なし、最適化って何ですか。(笑)
5桁程度のレコードなら全RDBMSの中でも最速なんじゃない? たしかMySQLより速いだろ
手元のDB見たら、一番大きいテーブルで400万レコードほどあった。 特に性能的な問題を感じないで(仕事で)使ってるよ。
XOOPSってPHPでしょ。ソース有るから弄ればいいじゃん。 まあSQL解析不要だからねえ。PreparedStatement状態。
791 :
787 :2005/12/23(金) 17:39:04 ID:???
JDBCからSQLiteって使える?
JNI次第じゃない?
>794 補足すると、J2SE5.0以降で使用する場合はAnt使ってリビルドが必要。
おまえら、SQLite3は地雷だってこと、黙ってたな!?
えっ?えぇっ?
3.3.0aだね・・・わかるよ・・・
kwsk
だから2系使えって言ったのに。3は開発版の永遠のベータ版だって。 とはいえ、2は非推奨みたいな雰囲気かもしだしてるのが悪いと思う。 3のほうこそ安定するまで非推奨にするべきだ。
具体的にどこが安定してないんだ?
2.8 ↓フォーマット変更(互換性がなくて大混乱) 3.0←いまここ ↓フォーマット変更(大混乱)←これからここ 3.3
とにかく、SQLite3は地雷。 それから、 >SQLite入門 すぐに使える軽快・軽量データベース・エンジン この本を参考にすると、恐ろしい目に…。これ、全然、技術書じゃないね。 洋書を手に入れるしかないのか!!
いやだから何が地雷なん? データフォーマットが 3.3.0 で切り替わったってだけ?
3.2.x使ってるけど、俺が使ってる範囲ではへっちゃらだ。 駄目な条件も書かずに地雷とか言ってる奴は自分の危険回避能力を疑ったほうがいい。
漢字。
>>809 またWindows 98/MEとかいう古代の遺物の話か。
>>808 >俺が使ってる範囲では
問題はそこじゃないんだが・・・。まあどういう範囲か知らないが、
他人にファイルを渡したり貰ったり、関連のツールを使ったり
その辺の互換性が混乱することになるだろう・・・。
まあ調査能力の乏しい君にもいずれ現実が教えてくれるだろう・・・
ここまで引っ張っておいて何が問題なのか書かないのか。 で、トラッカーにも載ってなくて、報告する気もなし?
>>808 正確なバージョンかきなよ。xじゃ、どれがへっちゃらなのかわかんねーよ。
>>811 お、REAL型を別扱いしてくれるようになったんだ。移行してみようかな。
バージョン3.3.0のためのファイル形式は、2進の値の、より効率的なコード化を提供するためにわずかに変化しました。 SQLite3.3.0はSQLite3のどんな先のバージョンでも作成されたレガシーデータベースを読み書きするでしょう。 しかし、バージョン3.3.0作成されたデータベースは、SQLiteの以前のバージョンで読み込み可能であるか、書き込み可能にならないでしょう。 それが必要であるそれらのまれなケースのためのコンパイル時により古いファイル形式を指定することができます。
ドキュメントも読まずにα版入れた馬鹿が嘆くスレ
>>803 そんなことで混乱するのは素人だけ
いや素人のほうが慎重か?
C#でSQLite使うのにDllImportして苦労してたのに…orz
>>819 慎重でも検討もしないけど、素人は古いバージョンから上げてくことが少ないので
データ形式の下位互換性は余り問題にならない。ただ機能的な互換性は問題にはなる。
アプリケーションが対応してようがしてまいが、"一番新しい"のを導入しようとするから。
ソースをコンパイルしたとき、あー、これはやば目だねって、わかるもんだ。
どうせ自分の能力不足で使えなかった腹いせをやってるだけだろう。
盲目的な信者ばっかだな・・・。
ちゃんと使えてるからな。「地雷」とか言う奴は曖昧なことしか書かないし。
>>822 このスレでコンパイルしてテストまで通せたやつは一人だけだろう。
>>824 遂にラベリング厨キタ━━━(゚∀゚)━━━!!!
>>829 ラベリング厨とラベリングするのはやめてください
EUC-JPでつっこんでも問題ないですか?
>>832 理由は? UnicodeってUTF-8でもいいのかよ?
836 :
831 :2006/01/13(金) 04:23:07 ID:???
>>835 を読んでみましたが、
SQLite2まではUTF-8、SQLite3からは16BE, 16LEも可で合っていますか?
フロントエンドを使わずに SQLiteを使ってるやつはいるか?
ラッパー自作して自作ソフトでSQLite使ってる人は珍しくない
既存のコンポーネントあっても自作する人はいるもんだ
パイプでSQL流して結果をファイルに落として自力パースでもいいんでない。 PerlやRubyならDBIとか使うのが手っ取り早いけど。
なんかそれぞれ微妙に論点ズレてねー? 「フロントエンド」「SQLite」の辺りを俺定義で使ってる奴が混ざってる予感。
SQLite 3.1.3がMac OS Xの超目玉機能のSpotlightの心臓部だから SQLite3が地雷だと言うならSpotlightが不安定だと証明しなきゃな。 あと、一般的にDBのファイルって他人と交換しないだろ。 普通のアプリなら、内部で使ってるDBとは別に、データを エクスポート/インポートするためのファイル形式を自分で定義する。 XMLとかでな。 それができずにグダグダ言ってるアプリ作者は単なるザコ。 消えろ。
Appleの製品は人類を不幸に陥れるために作られている
SQLite3 でも 3.3.0a とそれ以前が混ざってるような... アルファ版は地雷原を歩いてもらうためのもんでしょ? 3.2.8 はいい感じだけど MacOS X 10.4 で PHP 5.1.2 バンドル版の PDO_SQLITE (SQLite3 3.2.8) はファイルへの書き込みが妙に遅い症状あり。 :memory: は問題なくて、FreeBSD 6.0 でも問題ないので OS X もしくは Xcode 2.2 についてくる GCC 4.0.1 の問題くさい。
>>846 3.2.8使って、同等のCアプリを自分で書いて試してみた?
>>844 >あと、一般的にDBのファイルって他人と交換しないだろ。
これはわからない。どういう風に使われているのかは、アプリ次第だし
ユーザーの挙動は想像するだけ無駄。
>>850 ユーザーの挙動の話じゃなくて、アプリ作者のポリシーの話。
互換性がそんなに大事なら、データをエクスポート/インポートする
ファイル形式は、自分で定義するのが普通だが。
特に、SQLiteは組み込み用の軽量DBMSってのが売りなんだから
DBファイルは基本的にアプリ内部のローカルストレージであって
交換用の標準ファイルフォーマットではない。
AdobeのLightroomもSQLiteつかってるよ。
>>852 すまん。アプリケーション埋め込みでわからないの。Mac OS Xが近くに
あるなら、Lightroomを起動したあとに~/Pictures/Lightroom/を洗う
とデータがありまする。
これはReadMeからです
>SQLite
>The original author of SQLite has dedicated the code to the
> public domain. >Anyone is free to copy, modify, publish, use,
> compile, sell, or distribute the >original SQLite code, either
> in source code form or as a compiled binary, for any purpose,
> commerical or non-commerical, and by any means.
マカ氏ね! HFSファイルシステム自体が糞。
マカと創価学会員を殺してもいいって法律を作ってほしいよ
>>854 オリジナルコードと協調しているあたり、かなり変更して使ったぜー、って雰囲気をかもし出してる。
>>854 ファイルフォーマットから2、3.0、3.3を見分けろ。バイナリエディタで開けばわかるはずだ。
質問。Cからsqlite3を使っています。 unique indexをつくって、同じIDでinsertするとSQLITE_ERRORが返ってくるが、 これって他のエラーと見分けつくの?エラーコードで。 IDが既にあるならなにもしない的な動きにしたいんだが。
862 :
854 :2006/01/15(日) 10:59:41 ID:???
>>859 ありがとうございます。hexdump -Cでみると、1~2行目はこんな感じでした。
00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.|
00000010 20 00 01 01 00 40 20 20 00 00 00 15 00 00 00 00 | ....@ ........|
3.3は使ったことないですが、これは3.0系のフォーマットですか。
yes 俺のシステムだとfileコマンドがSQLiteのバージョンまで表示してくれるなぁ。
∧||∧ ( ⌒ ヽ < 2006-Jan-16 - Version 3.3.1 alpha ∪ 。ノ ∪∪
げ。3.0と3.3ってファイル互換性無かったのか。 どうりでODBCドライバとかことごとく使えないと…
866 :
NAME IS NULL :2006/01/18(水) 05:24:20 ID:jidDFeuu
SQLiteってCSEから扱えますか?
よくしらんがODBC経由なら使えるんじゃね?
CソースからSqlite3のAPIを使ってるんですが、 :memory:でメモリ上に作成したDBを ファイル化するにはどうやればよいのでしょうか
>>868 日本語フォントで表示できるのはCSEだけなの?
>>874 SQLiteSpyみたいなUnicode対応のソフトなら普通に日本語も表示できるが。
できないのってSQLiteCCみたいな屑ソフトだけだろ。
外人ってUTF-8とASCIIの区別がついてないから、SQLiteのUTF-8文字列を
そのままWin32 APIに渡しちゃうんだよw
7ビットであらわせるASCII部分はUTF-8でも同じだからなあ
APIがデフォルトUTF-8じゃないWin32がゴミ同然なだけ。
Win32は unicode だからな。 当時UTF-8は無かっただろ
878 :
NAME IS NULL :2006/01/25(水) 23:31:33 ID:BM5SnTHn
>>878 それってクエリー文字列入力欄は日本語対応してないし。
あと、勝手にクエリー文字列を小文字か大文字に変換してるらしく
文字列比較系のクエリーがまともに使えない。
880 :
NAME IS NULL :2006/01/26(木) 09:00:20 ID:3MzXjqdF
>>874 >SQLiteSpyみたいなUnicode対応のソフトなら普通に日本語も表示できるが。
初心者ですみませんが教えてください。SQLite3.EXEで普通に
CREATE TABLE FOO (A INTEGER, B TEXT);
とかして作ったテーブルのコードはなんですか?
SQLite3.EXEでは漢字が表示されるのにSQLiteSpyでは□で表示されるのですが・・・
>>880 クライアントではどの文字コードで入力したの?
882 :
NAME IS NULL :2006/01/26(木) 11:38:19 ID:XuaaA1W8
883 :
880 :2006/01/26(木) 13:08:29 ID:???
>>881 WindowsXPで普通に入力しました。
文字コードって指定できるのですか?
>>880 SJISでDBに書き込まれて、SQLiteSpyが
「SJISをUTF-8として扱って」文字化けしてるんだろ。
SQLite3.exeって、文字コードの変換とかは何〜んもやらんから。
DOS窓ではSJIS以外では入力はできません。
>>880 正しくUTF-8でDBに書き込んだ場合、
Windows XPのコマンドプロンプトでsqlite3.exeを使ったら
「日本語が文字化けして読めない」のが正しい挙動。
コマンドプロンプトでsqlite3.exeを使って日本語を入力/表示すると、
一見きちんと日本語が扱えてるように見えるが、これは実際には
「SJISで入力してSJISで保存されてSJISで表示してる」だけです。
「文字コードはUTF-8かUTF-16」と定義してるSQLite的には
間違った使い方がされている状態。
sqlite3コマンドで正しくUTF-8が入力/表示できるのは
LinuxやMac OS Xだけです。
ふむ。Cygwin + ck だとどうだろ。
しかしさぁ。メモリリークがめちゃくちゃあるんだけど、これって大丈夫なのか? Unix系プログラマってバカだからな、ANSIすらまもらねぇヤツ多いしさ。 これが当たり前なのか? Sqlite3.0系では。
SQLiteは使い手を選ぶんだよ。
「こいつみたいなアホに使われるのダルぅ。無意味にmallocしてやろw」
正直、UNIXでコマンド作るだけの時はメモリリークはキニシナーイ 起動して何か処理して終わればすぐプロセスごと終了だもの。 もちろんデーモンを作る時にはそうはいかないが。 SQLiteはそういうちょっとしたツール向けだろ。 常時起動している(メモリリークが問題になる)サーバで使うものじゃない。 アクセスがあるごとにプロセスをつくり、そこでSQLiteを利用、 終わればプロセス毎開放するような使い方ならともかく。 クライアントアプリでも、ずっと立ち上がってるようなものには向いてないだろな。
つか
>>888 が言ってるのは単にフリーしてないメモリがあるって話だろ。
それが一定量であれば問題にしないのがUnix文化だし、実際Unixだろうと
Windowsだろうと問題にはならない。
リークってのは処理を続けていくうちに比例的にどんどんメモリ消費量が増えて
いっていつか続行不能になるってことだが、Sqliteでそういう経験はないな。
一ヶ月くらいの連続運用は平気でやってるけど。
ANSIの通らない処理系が現役だったりするから いろんな環境に対応させようとするとこうなるのはまあ・・・
SQLiteSpyって見るだけなの?セル上でデータの変更とかできないの?
そうかぁ? 必要じゃない限り、いろんな環境に対応させようなんて考える必要ないはずだけどなぁ。 リークっていうのは…て書き出しにしちゃ、誤用っぽい説明だな。 おまえみたいな奴がいるから。Windowsじゃ強引にプロセスのマークをつけて、メモリ解放するように 「途中からOSを仕様変更」したからな。 しかし、古典的エンジニアが聞いたら卒倒しそうな文化だな。
>>895 Win16とか旧MacOS時代の人、乙。はやく時代に適応できるといいね。
SQLite3 を組み込んだ UNIX 上の daemon を一年以上メモリリークさせずに動かしてますが何か?
>>897 っつーか、Spotlightなんてまさに
「SQLite3を組み込んだUNIX上のdaemon」だよな。
Solaris 10 の svc は SQLite2 だから関係無いか。
>>896 どんな結果でさえ、ソース上、バカなコーディングは遠慮させていただく。
このままマイナーDB企画として埋もれてしまうのかな…
組み込み用のDBとしては、かなりの躍進じゃない?
いまさらBerkeleyDBなんか使いたくないよ
必要じゃない限り、移植の手間がかからないように書くもんじゃないのか? 卒倒しそうなのは、古典的PC系エンジニアですな。 メモリリークって言ったら、 (事実上)プログラムが制御出来なくなったメモリが、発生することだと思ってた。
メモリリークってのはフリーしてないメモリが「増え続ける」事。 単に使った後のメモリを開放しないのは行儀が悪いだけでリークではない。 メモリがタイトになればページアウトされるだけだから深刻な問題にはならない。 プログラムが制御出来ないメモリが発生するのはOSのバグだろ。
メモリリークの結果、メモリが増え続けるんだろ。 メモリリークとメモリが増え続けることは別の話。 メモリがタイトになれば、ページアウトされてパフォーマンスダウンじゃねーの? カーネルプログラミングの場合だと、制御できないメモリが発生はプログラムのバグで、 OSのバグじゃないんですけど。
メモリリーク: プログラムがヘボで、一度OSから取得したメモリブロックを 使用終了後もOSに返さないままプログラム側でもポインタも失うこと。 OS側から見れば、プログラムから返却されていないから プロセスが終了するまでそのメモリは割り当てっぱなしになるし、 プログラム側でも既に使ってない空虚なメモリ空間が発生する。 このメモリ空間はプロセスが終了すればOSによって強制的に回収されるため 単発コマンド等では実害として現れにくいが、 長時間稼働し続けるプログラム、特にデーモン等では、 時間が経てば経つほどメモリ保持量が増大し続ける被害が発生する。 使用メモリが増え続けること = メモリリーク、ではない。 フリーしてないメモリが増え続けること = メモリリーク、は正しい。 メモリリークの結果、使用メモリが増え続ける、のは正しい。 使用メモリが増え続ける = メモリリーク、とは限らない。
早い話、増え続けるのでなければ全く無害。
偏執的に全てのメモリをfreeしろというのは
>>888 のような低脳プログラマでも
仕事できるようにするための規律にすぎない。
free()したからといってOSにメモリが返却されるとは限らない(以下例の奴
メモリ3GBつんで半日に1回再起動させてるから問題なし
>>910 仕事でする規律って…。組み込み系とかの仕事したこと無いんだろ。
低脳なんて言葉が使えるほど経験値高くないぞ、おまえは。
>>913 組み込み系の真面目なプログラマが聞いたら怒るぞ。
おまえが土方仕事しかやってないってことはよくわかったから、もう来なくていいよ。
こんなとこでfjばりのキモい論争は勘弁してくれ。
916 :
豪 :2006/01/29(日) 21:20:18 ID:w90V2ZdU
ゴールデンレター) このスレを見た人はコピペでもいいので30分以内に 7つのスレへ貼り付けてください。 そおすれば14日後、好きな人に告白され、 17日後にはあなたに幸せがおとずれるでしょう
これだから、Unix系はバカなんだよ。
SQLite3 API を正しく使っていればメモリリークするなんて俄かには信じ難いのですが、
一体どんなコードでメモリリークが再現するのか
>>888 さん見せていただけませんか?
>>918 プログラムが制御出来ないメモリが発生するのはOSのバグだろ。
プログラムが制御出来ないメモリが発生するのはSQLite3のバグだろ。
こんなことを言うUnixプログラマはバカなんだよ。
低脳888氏を弄るのも飽きてきたので別の話題を頼む
>>921 > 913 名前:NAME IS NULL 本日のレス 投稿日:2006/01/29(日) 16:42:01 ???
>
>>910 > 仕事でする規律って…。組み込み系とかの仕事したこと無いんだろ。
> 低脳なんて言葉が使えるほど経験値高くないぞ、おまえは。
おつかれ、910。
業務アプリにSQLite3を埋め込んで負荷テストやったけど、
メモリリークは報告されなかったよ。
(唯一、アプリ終了時のCriticalSectionハンドルの開放忘れ
(SQLite3が内部で使ってる)があったから自分で修正したけどね。)
>>888 がヘボプログラマでFA。
>>924 結局
>>888 はフリーしてないメモリブロックがあるというデバッガメッセージを
一目見ただけで鬼の首を取ったように騒いだだけなんだろうな。
>>923 能無し雑魚がまだいたの?
お前みたいな下等生物が居ていい板じゃないんだよここは。な?
SQLite3自体にメモリーリークはない、でFA? それとも命令や使い方によってはあるのかな?
2006-Jan-31 - Version 3.3.3 stable 早い、早すぎるよ。
ホンマにstableでええんか?って思うね。 個人的に3.3.6ぐらいまでは様子見。
2chブラウザJane Doe Style にsqlite.dllが入ってた
3.3.3 stable に対応するODBCドライバはまだないの? フォーマットが変わったのでSQLSpyもCSEも全滅じゃん。
あちこちで3.3.3に悲鳴が上がってる
>>932 まだ3.3.3使ってないから誤解してるのかもしれんが、ソースからコンパイル&リンク
し直せばいいって問題じゃないの?
sqlite.dll を置き換えれば収まるような問題では無い?
3.3.3でpython-sqliteのバグが顕在化してPython関係が全滅状態。
だから地雷だっつっただろー。
>>938 を SQLite3 のバージョンアップのせいにするのはお門違いっつーか。
>>940 919 名前:NAME IS NULL 投稿日:2006/01/29(日) 22:56:28 ???
>>918 プログラムが制御出来ないメモリが発生するのはOSのバグだろ。
python-sqliが制御出来ないメモリが発生するのはSQLite3のバグだろ。
こんなことを言うUnixプログラマはバカなんだよ。
>>941 ごめんなさい。こういうとき、どんなレスをすればいいのかわからないの。
>>942 必ず、ファイルは閉じて、メモリは解放する。
>>942 閉じればいいと思うよ
,、‐ ''"  ̄ ``'' ‐- 、
/イハ/レ:::/V\∧ド\
/::^'´::::::::::::i、::::::::::::::::::::::::::::\
‐'7::::::::::::::::::::::::ハ:ハ::|ヽ:::;、::::::::::::丶
/::::::::::::::/!i::/|/ ! ヾ リハ:|;!、:::::::l
/´7::::::::::〃|!/_,,、 ''"゛_^`''`‐ly:::ト
/|;ィ:::::N,、‐'゛_,,.\ ´''""'ヽ !;K
! |ハト〈 ,r''"゛ , リイ)|
`y't ヽ' //
! ぃ、 、;:==ヲ 〃
`'' へ、 ` ‐ '゜ .イ
`i;、 / l
〉 ` ‐ ´ l`ヽ
/ ! レ' ヽ_
_,、‐7 i| i´ l `' ‐ 、_
,、-‐''"´ ノ,、-、 / 、,_ ,.、- {,ヘ '、_ `ヽ、_
/ i ,、イ ∨ l.j__,,、..-‐::-:;」,ハ、 '、` ‐、_ ,`ヽ
/ l ,、‐'´ // ',/!:::::::::;、--ァ' / `` ‐ `'7゛ ',
/ l i ´ く ';::::::l / / / ',
/ ! l \ ';:::l , ' / i/ ',
sage
age
2006-Feb-11 - Version 3.3.4
2006 February 11 (3.3.4) Fix a blunder in the Unix mutex implementation that can lead to deadlock on multithreaded systems. Fix an alignment problem on 64-bit machines Added the fullfsync pragma. Fix an optimizer bug that could have caused some unusual LEFT OUTER JOINs to give incorrect results. The SUM function detects integer overflow and converts to accumulating an approximate result using floating point numbers Host parameter names can begin with '@' for compatibility with SQL Server. Other miscellaneous bug fixes
うへえ
おひぃ
あはぁ
らめぇ
あぁぁぁ
sqliteを長時間使っている時点でダメポ。 他のまともなRDB使え。
やっぱりSQLiteは使い手を選ぶね。
それが SQLiteの欠点だな。
読解力ないね。
選民思想キモス
まあ普通のRDBならちゃんとセッション管理してくれるけど、sqliteは開きっぱで忘れてリソース喰われまくり。
> sqliteは開きっぱで忘れて 自分のミスを SQLite のせいにするかね。
│
J
>>960 ∩_∩ ∩_∩
(・(ェ)・ ) ( ・(ェ)・)
開いたら閉じるという「簡単なこと」がなぜ出来ないのかねぇ。
>>964 >>960 によると、「普通のRDB」なら閉じなくても開きっぱにならないんだそうですよ。
セッションタイムアウトで強制的に閉じられる。
ライトなものを使いこなす能力のない人は普通のRDBでも使ってりゃいいじゃん。
なにしろ名前がSQLiteだからね
人の作った物にケチつけて自分が偉くなったような気分になってんじゃねーカス
>>966 は、Webブラウザなんかを作るときも、セッションタイムアウトまで
開きっぱにするらしい。
ひどい公害プログラマだなw
面白いプログラムは書けないくせに、人のことばかり言うんだな >> 971
ふとんがふっとんだ
わらちゃった(つД`)
7000個のりんごがあります。今3000個追加しました。全部で何個になったでしょうか?
データベースがロックされてて読めません
ロールバックされたので7000個のままですた。
正解は おまんこ。
何だこのカオスは
981 :
NAME IS NULL :2006/02/24(金) 16:00:36 ID:+IIz7SDv
age
もうだめかもしれんね。
perlでDBI使って DBI->connect( 'dbi:SQLite:/ほげほげ/db/dbfile', '', '' ) とかしてApacheのCGIで動かしてみてうまく行くっぽいんで、 mod_perl入れたら DBD::SQLite::db selectrow_array failed: not an error(21) at dbdimp.c line 398 at ほげほげ とかのたまう。 クエリ結果ぜんぜん帰ってこないし、insert してもデータ入らないから あきらかにおかしいんだけど、 not an error てなんなんだよー
httpdそれぞれがDB掴んで動く訳ないじゃん(w
また開いたら閉じるができない香具師か
複数動いて握りっぱなしなら動かなくても納得するんだけど、 apache起動して一発めでもダメなもん?
開発環境と鯖のSQLiteのバージョンが合ってないとか。 DBのファイルが壊れているとか。
起動した瞬間にDB握ってる。mod_perlロードしてるでしょ。
990 :
NAME IS NULL :2006/02/25(土) 16:00:49 ID:RhNDLCTJ
ああ BerkeleyDB からの乗り換えか。そりゃ乗り換えたくもなる罠。
>>987 全く同じ環境でmod_perlを有効にしてないときはちゃんと動くのよね。
mod_perlありだと単純に select 10 とかやっても答えが返ってこない。
>>989 確かにmod_perlだけど、どうやったら起動時にDB握るの?
connectするまでは握るDBすら決まってないんだから。
Apache::DBI->connect_on_init
>>992 リクエスト毎に disconnect してもダメなん?
>>994 ダメなん。ていうか一番最初のクエリからしておかしいので。
ぐーぐる様に聞いても同じような症状で困ってる人は見つかっても
解決したって話が出てこない。
mod_perl外すのは厳しいから、違うDBMSにするかdbm方面に逃げるか
かなぁ。
再現コードぷりーず。 次スレで。