2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

SQLite 7

1 :NAME IS NULL:2008/09/05(金) 11:27:56 ID:???
http://www.sqlite.org/

過去スレ

sqliteを語るスレ
http://pc8.2ch.net/test/read.cgi/db/1056956494/
SQLite 2
http://pc8.2ch.net/test/read.cgi/db/1140827718/
SQLite 3
http://pc8.2ch.net/test/read.cgi/db/1152367932/
SQLite 4
http://pc11.2ch.net/test/read.cgi/db/1162621344/
SQLite 5
http://pc11.2ch.net/test/read.cgi/db/1176223619/
SQLite 6
http://pc11.2ch.net/test/read.cgi/db/1193118037/

2 :NAME IS NULL:2008/09/05(金) 11:28:19 ID:???
ツール等

【GUIツール】 TkSQLite
ttp://reddog.s35.xrea.com/wiki/TkSQLite.html

【ADO.NET 2.0 Provider】 System.Data.SQLite
ttp://sqlite.phxsoftware.com/

【ODBC】 SQLite ODBC Driver
ttp://www.ch-werner.de/sqliteodbc/

3 :NAME IS NULL:2008/09/05(金) 11:28:38 ID:???
ネタ

OS X ハッキング! SQLiteが広げるこれからのアプリケーション
ttp://journal.mycom.co.jp/column/osx/236/index.html

SQLite Java Wrapperのコンパイル
ttp://syo.cocolog-nifty.com/freely/2007/10/sqlite_java_wra_f79c.html

SQLiteへの大量のINSERT処理が厳しい (CodeZine編集部ブログ):
ttp://blog.codezine.jp/editor/2007/10/sqliteinsert.php

SQLite性能評価その1
ttp://www.sutosoft.com/room/archives/000450.html

Fulltext index on SQLite
ttp://www.dodgson.org/omo/t/?date=20061001

SQLite の全文検索を Python から使ってみる (1)
ttp://plaza.rakuten.co.jp/kugutsushi/diary/200707270001/

SQLite Full Text Search with MeCab
ttp://reddog.s35.xrea.com/wiki/SQLite%20Full%20Text%20Search%20with%20MeCab.html

4 :NAME IS NULL:2008/09/06(土) 22:25:15 ID:???
>>1

EXPLAINした時の、数値や文字列の意味の詳細はどこを見ればいいですか?

5 :NAME IS NULL:2008/09/07(日) 05:32:37 ID:???
これはどうよ。

窓の杜 - 【REVIEW】「SQLite」のデータベースをGUIで操作できる高機能管理ソフト「PupSQLite」
http://www.forest.impress.co.jp/article/2008/09/04/pupsqlite.html

6 :NAME IS NULL:2008/09/07(日) 11:09:21 ID:???
>>5
なんだ、ただの神ツールか

7 :NAME IS NULL:2008/09/07(日) 14:26:08 ID:???
>>4
http://www.sqlite.org/docs.html
↑の「VDBE Tutorial」と「VDBE Opcodes」なんだけど、これは SQLite2 の時点のもの。
3 でも大体同じなのであとの細かい部分はソースコードを見ながらかなあ。

8 :NAME IS NULL:2008/09/07(日) 19:56:02 ID:???
ChromeもSQLiteを使ってると聞いてやってきました\(^o^)/
これからはSQLiteの時代ですね
僕もちょっと使ってみます

9 :NAME IS NULL:2008/09/14(日) 15:37:10 ID:???
同じデータベース(ファイル?)に同時に書き込みと読み込みを実行すること出来ないの?

10 :NAME IS NULL:2008/09/14(日) 19:35:07 ID:???
読み込みは可
書き込みは不可
たしかSQLITE_BUSYになる

11 :NAME IS NULL:2008/09/15(月) 00:13:30 ID:???
補足で、書き込み一人+読み込み複数は同時にできる。

12 :NAME IS NULL:2008/09/15(月) 11:53:13 ID:???
>>9
書込み中は読込みも出来なくなる。
読込み中の書込みも不可。
読込み中の読込みは可能。

13 :NAME IS NULL:2008/09/15(月) 13:19:39 ID:???
>>12
もうsqlite2の頃の話はいらないんじゃない?

14 :NAME IS NULL:2008/09/16(火) 10:25:08 ID:???
http://www.sqlite.org/version3.html
ここの Improved Concurrency (とmore detailed reportというリンクの先)を読んでね

15 :NAME IS NULL:2008/09/18(木) 02:54:57 ID:???
>>13
書き込みトランザクション中は読み込みはブロックされるし
読み込み中は書き込みトランザクションブロックされるよ

この制約を破る方法は sqlite3_enable_shared_cache() した上で
PRAGMA read_uncommited=1 を実行する必要がある。

しかも、この方法が有効なのは1つのプロセス内で複数のスレッドが
読み書きする場合のみ。

複数のプロセスが1つの DB に読み書きするケースでは、
sqlite3_enable_shared_cache() したプロセス1つだけに DB アクセスを任せて
他のプロセスはそのプロセスとプロセス間通信をすればいい。

つまり、自前で DBMS を作るってことw


16 :NAME IS NULL:2008/09/28(日) 15:06:29 ID:m5vIwQ5g
ドラゴソボールage

17 :NAME IS NULL:2008/09/29(月) 20:27:35 ID:???

暗号化は対応したのかね?

18 :NAME IS NULL:2008/09/29(月) 20:52:19 ID:???
>>17
有料版なら対応してるよ


19 :NAME IS NULL:2008/09/30(火) 20:14:43 ID:???
これか。
Professional Support Options for SQLite
http://www.hwaci.com/sw/sqlite/prosupport.html

20 :NAME IS NULL:2008/10/01(水) 20:05:51 ID:???
ワラタ

21 :NAME IS NULL:2008/10/01(水) 20:17:13 ID:???
そもそも暗号化って何だ?? 分からん
たとえば、DBファイルだけAESか何かで暗号化してればわーいおkおkなの?
TrueCryptみたく
で、鍵をアプリケーションなりユーザーなりが知ってれば満足なの?
分からん

22 :NAME IS NULL:2008/10/03(金) 10:08:48 ID:???
だね。
暗号化っつってもいろんなレベルがあるから、
>>17 みたいな質問じゃ漠然としすぎてて >>19 が解になってるかもよくわからんよね。

23 :NAME IS NULL:2008/10/07(火) 04:26:41 ID:OJDHP6tB
ファイルの先頭が SQLite format 3 となっているファイルって
SQLite 3 のデータベースファイルですよね?
あるファイルがどのバージョンの SQLite のファイルであるか
調べる方法ってほかにありますか?

24 :NAME IS NULL:2008/10/09(木) 17:54:59 ID:???
create table t (
id integer primary key
name text
);
となっているとき
insert into t (id, name) values (123, 'hoge');
とすると主キーが 123 の行を追加できてしまいますよね。
insert文で指定したidを無視して常にauto incrementな値を
つけさせるようにはできないでしょうか?

25 :NAME IS NULL:2008/10/09(木) 18:07:17 ID:???
トリガでも使えよ

26 :NAME IS NULL:2008/10/10(金) 00:06:29 ID:???
>>24
そもそもなんで insert into t (name) じゃダメなのかを言えよ


27 :NAME IS NULL:2008/10/13(月) 22:07:20 ID:???
SQLite って全然はやってないの?

28 :NAME IS NULL:2008/10/13(月) 22:50:14 ID:???
>>27
流行りそうで流行らない

29 :NAME IS NULL:2008/10/13(月) 22:50:15 ID:???
流行ってるが、安定しすぎてネタが無くてスレも盛り上がらない。

30 :NAME IS NULL:2008/10/13(月) 23:03:47 ID:???
おまえがFirefoxすら知らないのは理解してあげたので、お前のような
知能の低いものでも、理解される部分があるのだと感謝し、この世から
消えること。

31 :NAME IS NULL:2008/10/14(火) 00:15:51 ID:???
日本語でおk

32 :NAME IS NULL:2008/10/14(火) 00:42:08 ID:???
まあ所詮日本の流行なんてアメリカの10年送れだから、あと5年くらいしたら流行るよ。
Pythonもブレークするのかなり遅かったし。

33 :NAME IS NULL:2008/10/14(火) 02:04:25 ID:???
>>31
お前のような馬鹿は死ね

34 :NAME IS NULL:2008/10/14(火) 06:30:35 ID:???
簡単便利すぎてスレ聞くまでもなく使える
ただそれだけの事

35 :NAME IS NULL:2008/10/14(火) 18:47:07 ID:???
このスレは遭難時の避難所のようなもので、普段使用されることはない。
でもたまに設備の点検が必要

36 :NAME IS NULL:2008/10/14(火) 23:39:56 ID:???
SQLite Manager の使い方で
初心者向けにわかりやすく書いてある
ページ教えて。

37 :NAME IS NULL:2008/10/15(水) 00:19:52 ID:???
SQLiteの管理マネージャで
http://www.edu.meisei-u.ac.jp/~saishu/dbgairon/SQLite2.htm
この中で一番カンタンなの教えて

38 :NAME IS NULL:2008/10/15(水) 00:40:13 ID:???
いまだにPHP厨が活動してんのか!てめーらはBDB使っとけ!!

39 :NAME IS NULL:2008/10/15(水) 01:54:14 ID:???
WEB I/Fじゃなきゃだめなの?
windowsなら、>>5とかよさげじゃね?

40 :NAME IS NULL:2008/10/18(土) 07:39:58 ID:???
いい加減I/FとかS/Wとか言うのやめて欲しい

41 :NAME IS NULL:2008/10/18(土) 18:39:01 ID:???
最近のP/CのS/WのI/Fと言えばWebだよね。O/Sは何でもいいし

42 :NAME IS NULL:2008/10/27(月) 16:25:27 ID:???
>5 みたいなのでこれは?FireFoxのアドオン。GUIのSQliteマネージャー
ttp://code.google.com/p/sqlite-manager/



43 :NAME IS NULL:2008/10/28(火) 21:01:09 ID:???
>5 とか >42 とかに
AccessやOOOBaseのフォームの機能がついたものはありますか?

44 :NAME IS NULL:2008/10/28(火) 22:18:03 ID:???
試せよ

45 :NAME IS NULL:2008/10/28(火) 23:29:07 ID:???
>>43
BaseをSqliteに接続させれば済むのでは。。

検索したらどこかにやり方が書いてあったような?

46 :NAME IS NULL:2008/10/29(水) 11:28:14 ID:???
ありました
ありがとう


47 :NAME IS NULL:2008/11/10(月) 22:47:55 ID:???
TkSqliteの日本語化ってのができない…
環境変数にLANG=jaを足せって書いてあるけどどれに足したらいいのかどこにも書いてない…
どなたか教えてくだされ

48 :NAME IS NULL:2008/11/10(月) 23:07:30 ID:???
>>47
http://www.google.com/search?hl=en&rlz=1B3GGGL_jaJP298JP298&q=%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0+LANG%3Dja+windows&btnG=Search

49 :NAME IS NULL:2008/11/10(月) 23:36:47 ID:???
>>48
本当にありがとう。
なんとか探し当てることができました。

これからSQLを勉強します。

50 :NAME IS NULL:2008/11/12(水) 12:19:21 ID:1JWWLcVt
最新のSQLiteをVB2008から使ってみたいのだが、日本語で
書かれた本やサイトが古いのしかなく、しかもVBからとい
うのはあまり事例がないみたい。

Jetじゃファイルサイズに制限があって、ちょっとした
システムだとすぐにオーバーしちゃうんで、Btrieveの替わりに
できそうな、組み込み型の良いDBMSだと思うんだがなぁ。

MySQLとかPostgressだとそれなりのスキルが要求されるから、
VB+SQLiteだとアマチュアプログラマでも覚える項目が少なくて
済むはず。

翔泳社あたりで出してくれんもんかのぉ

51 :NAME IS NULL:2008/11/12(水) 12:28:09 ID:???
古い情報でも取っ掛かりには十分だろ。
手取り足取りじゃないとダメなら、どうせサンプル動かす以上の事は出来ない。

52 :NAME IS NULL:2008/11/12(水) 17:28:10 ID:???
>>50
お前さんはSQLite .NETでググる間を惜しんでそんな長文書いたの?
それともググっても理解できないほどアマチュアプログラマ(笑)なの?

53 :NAME IS NULL:2008/11/12(水) 19:24:22 ID:???
まあまあ、とっかかり程度ならありじゃね?
書籍化したら8ページくらいの冊子になりそうだけどw

54 :NAME IS NULL:2008/11/12(水) 19:38:21 ID:???
アマチュアなら覚える項目が少なくていいなんて甘いことを
言ってるやつは使わなくてよろしい。SQLiteはアマチュアに
やさしくはないが、本職が惚れてしまうような使いやすさ。
プロの道具。素人はSQL Server Compactでも使ってなさい。

55 :NAME IS NULL:2008/11/12(水) 19:42:29 ID:???
プロの道具(笑)

56 :NAME IS NULL:2008/11/12(水) 19:46:49 ID:???
SQL Serverのほうがよほどプロ道具じゃないか
SQLiteはコンパクトで肩ひじ張らずに使えるところが好き

57 :NAME IS NULL:2008/11/12(水) 19:51:40 ID:???
そこら辺を引き合いに出す時点で微妙にアホっぽい。

58 :NAME IS NULL:2008/11/12(水) 22:30:21 ID:???
具体的に頼む

59 :NAME IS NULL:2008/11/12(水) 23:45:09 ID:???
>>52
SQLite.NETとSQLiteを別々にググるよりは、
一つの本で全部説明してあるほうが読みやすそうだな

>>54
無理に批判しようとして墓穴を掘ったな

オマエは味方としては使えないが、敵としてなら頼もしいヤツだ

60 :NAME IS NULL:2008/11/12(水) 23:58:18 ID:???
味方にすれば怖いけど、敵に回せば頼もしい
ってなんかのネタだっけ?
知ってるとどこかで使いたくなるよね

61 :NAME IS NULL:2008/11/12(水) 23:58:28 ID:???
>>59
読みやすいとかそういう話なのか?

SQLiteを.NETで使いたかったが手も足も出なかった
入門本があればかつるのに

こういう話だろ?
で、入門本(笑)が実在すりゃ8ページにも満たないだろうなって話で
結論としてはググレカス

62 :NAME IS NULL:2008/11/13(木) 00:46:52 ID:???
>>56
SQL ServerじゃなくてSQL Server Compactな。ぐぐれカス

63 :NAME IS NULL:2008/11/13(木) 01:10:05 ID:???
本当に良質な情報は本にある事の方が多いが、
入門レベルまで本に求める様じゃ根本的に向いてない。
ググレカス。

64 :NAME IS NULL:2008/11/13(木) 01:17:23 ID:???
こういう偏屈な連中が多いから、SQLiteは今ひとつ
メジャーになれないんだろうね。

メジャーではない開発ツールって、いろんな意味で
コストがかかるからなかなか採用できないんだ。
だからますますマイナーになるという負のスパイラルに
陥っちゃう。

VBで手軽に使うんだったら、Postgressはどうかな。
商用にしても費用はかからないからさ。
クグレカス

65 :NAME IS NULL:2008/11/13(木) 01:22:07 ID:???
ものすごくメジャーだと思うけど。
Windowsで閉じてる人はともかく。

66 :NAME IS NULL:2008/11/13(木) 06:27:47 ID:???
メジャーというか、空気の様に使うよなSqliteって

67 :NAME IS NULL:2008/11/13(木) 10:19:32 ID:???
System.Data.SQLiteで探すのがはやい

68 :NAME IS NULL:2008/11/13(木) 12:05:38 ID:???
>>64
おまえがすごいバカってことは理解してあげたから、
組み込み用DBについてお勉強して出直すこと

69 :NAME IS NULL:2008/11/13(木) 13:21:15 ID:???
しねよ

70 :NAME IS NULL:2008/11/13(木) 14:00:18 ID:???
ttp://sqlite.phxsoftware.com/

右側にあるSQLite for ADO.NET 2.0「1.0.6.0 Oct 4. 2008」を落とすと吉。


71 :NAME IS NULL:2008/11/13(木) 14:01:45 ID:???
>>64
1文毎にお前馬鹿だろって言いたくなるカキコだなw
で、どこを立て読みですか

72 :NAME IS NULL:2008/11/13(木) 14:10:44 ID:???
お前らどんだけ同じもん繰り返し教えりゃ気が済むんだ

73 :NAME IS NULL:2008/11/13(木) 14:40:14 ID:???
無限に繰り替えしてください
バカは10レスも進むと上のほうは読まないからな

74 :NAME IS NULL:2008/11/13(木) 20:44:03 ID:???
バカは「ろくに調べない」し「最初に思いついた可能性しか見えない」生き物だから、
「わかったつもり」になるのも「わかりません」と匙を投げるのも早いんだよな。

75 :NAME IS NULL:2008/11/13(木) 20:49:23 ID:???
>>64 フルボッコだなw

76 :NAME IS NULL:2008/11/13(木) 21:05:38 ID:???
「バカ」って言ってるの一人じゃね?

77 :NAME IS NULL:2008/11/13(木) 21:13:04 ID:???
>>75
ネタが無いのでおもちゃを見つけるとつい・・・

78 :NAME IS NULL:2008/11/14(金) 01:58:18 ID:???
「教えて君」「教える君」というのは、
ネット上に存在する2種類の人種の人たちを示す揶揄された敬称のことであるが
その影には「教えない君」という人種が多数いるの事にはあまり注目されていない。

しかし、実はその「教えない君」という人種が一番厄介かつ迷惑な存在だったりするのである。

そもそも荒れる原因というものは「教えない君」の、無秩序かつ、無神経なレスにある部分が
大多数なのだが、彼らの多くは、そういった感覚はどうやら持ち合わせていないようである。

第三者がそうした場面を見た場合に、誰に一番の非があるというのは
「教えない君」にあるというのが客観的事実であるのは明らかなのであるが、
彼らは認めようとしない。

表面上は、「教えない君」はネット上のルールや倫理や秩序などを叫ぶのであるが
どうやら真相は、現実社会において蔑まれる存在である「教えない君」の
鬱憤晴らしのようである。

上記でそういった悲哀のレスを付けた人たちは、勇気を持って自らの弱さと過ちを認め
反省しなければならない。

それが、キミたちニートの人間的に成長できる数少ないチャンスなのである。

79 :NAME IS NULL:2008/11/14(金) 02:08:52 ID:???
いや教えても何も生み出さない事はこれまでの経緯から明らかなので
ここはあえて教えないという流れで

80 :NAME IS NULL:2008/11/14(金) 02:40:01 ID:???
正論過ぎるコピペも困り者だな
ネタにならん

81 :NAME IS NULL:2008/11/14(金) 09:18:05 ID:???
>>79
それが教えない君の典型的な言い訳だな。

ってゆーか、ワナビーの言い訳だったりもする。

オマエだって何も生み出してないくせに、大口叩くなよwww

82 :NAME IS NULL:2008/11/14(金) 09:38:14 ID:???
なんで馬鹿にタダで教えなきゃいけないの?
っていうか、SQLite程度も使えないようじゃ全体的に相当低いレベルな訳で、
教えても理解できないんじゃないかな?

時間の無駄じゃないのかな?

83 :NAME IS NULL:2008/11/14(金) 10:34:22 ID:???
>>82
> なんで馬鹿にタダで教えなきゃいけないの?
まぁ誰もいけないとは言ってないけどね。

84 :NAME IS NULL:2008/11/14(金) 10:41:49 ID:???
>>81
そうやって「こういう奴ってこうなんだよな」と、知らない他人のキャラクターを
一人で勝手に作ってわかったつもりになってるのが、一番ワナビーなのでは。
偏差値と自意識に大きな隔たりのある二流大学生のニオイがする。

> オマエだって何も生み出してないくせに、大口叩くなよwww
「何も生み出してないオマエ」というのは、「現実の79」ではなくて、
「いま君が作った、そうであってくれないと君の理屈が成立しない79の設定」だよね。
そういう俺設定を持ち出さないと反撃できないっていうのは、言い負けてるのと同じだよ。

85 :NAME IS NULL:2008/11/14(金) 12:36:11 ID:???
必死で煽っても、エスパーしたり怠け者の代わりにググってあげるのが好きな人はそういないよw

86 :NAME IS NULL:2008/11/14(金) 15:38:46 ID:???
初心者に対しては教え方がとても大切であり
教えるための環境が整っていない所ではかえって教えないほうがいい
そして2chは教える環境としては最悪の場所

その前に小中学生ならともかく高等教育受けた連中は匿名掲示版で質問すんな
恥を知れ恥を

87 :NAME IS NULL:2008/11/14(金) 15:40:49 ID:???
64が延々粘着中

88 :NAME IS NULL:2008/11/14(金) 16:09:02 ID:???
SQLiteスレらしくない流れだな

89 :NAME IS NULL:2008/11/14(金) 16:18:45 ID:???
以前、SQLite2と3との非互換云々でさんざ荒らしていたヤシでしょ

90 :NAME IS NULL:2008/11/14(金) 19:02:36 ID:???
もうグダグダだな
店の外でやってくれ

91 :75:2008/11/14(金) 19:06:39 ID:???
ああ、やっと仕事がおわってココ覗いたら 今日も >>64 がフルボッコだったw

92 :NAME IS NULL:2008/11/14(金) 20:39:26 ID:???
>>88
前からこんな感じだったよ。まともな情報ほとんどなし。
とくにPHPがMySQLの代替目的でSQLiteに目をつけた当たりからがひどい。

93 :NAME IS NULL:2008/11/15(土) 02:04:16 ID:???
おいおい、誰も普段はまともな情報があるなんて言ってないぞ

94 :NAME IS NULL:2008/11/15(土) 14:36:06 ID:???
他人に質問とかするまでもなくサクッと使えてしまうのが、SQLiteの魅力だからな。
ある意味、SQLiteの質問者は、「SQLiteについて質問している」という時点でアカンとも言える。

95 :NAME IS NULL:2008/11/16(日) 03:08:52 ID:???
ないない

96 :NAME IS NULL:2008/11/16(日) 04:03:18 ID:???
ググれば日本語解説もあるし
あのシンプルに書かれたオフィシャルヘルプを読めばほぼ全て賄える

こんなとこで質問する奴は、酷く使えない奴だと言うのは確定的に明らか

97 :NAME IS NULL:2008/11/16(日) 04:12:06 ID:???
初心者の皆様へ

こんな連中が巣くってるSQLiteにさっさと見切りをつけ、
テキストもコミュニティもしっかりとして、それでいて
商用無料なPostgressを使いましょう

どうぞPostgressスレにお越しください

98 :NAME IS NULL:2008/11/16(日) 04:39:54 ID:???
PostgreSQLも使っててごめんなさい><

99 :NAME IS NULL:2008/11/16(日) 05:16:53 ID:???
>>97
64の真似して何がしたいの?マゾなの?馬鹿なの?死ぬの?

100 :NAME IS NULL:2008/11/16(日) 12:56:23 ID:???
http://www.itwriting.com/blog/a-simple-delphi-wrapper-for-sqlite-3

上記サイトのDelphiラッパーを使おうと思い、まず同梱のTestSqlite.dprを実行させようとしたところ
エラーが出てコンパイルできませんでした。どこを修正するといいのでしょうか?

[エラー] SQLiteTable3.pas(470): 'TSQLite3Destructor' と 'Pointer' には互換性がありません
[エラー] SQLiteTable3.pas(627): 'TSQLite3Destructor' と 'Pointer' には互換性がありません
[エラー] SQLiteTable3.pas(787): 'TCollateXCompare' と 'Pointer' には互換性がありません
[致命的エラー] uTestSqlite.pas(7): 'SQLiteTable3.pas' ユニットはコンパイルできませんでした

101 :NAME IS NULL:2008/11/16(日) 16:36:17 ID:???
型の互換性がないと云ってるんだから、適当にCastすればいいんじゃないのか。

102 :NAME IS NULL:2008/11/16(日) 16:38:31 ID:???
http://pc11.2ch.net/test/read.cgi/tech/1225641040/139

103 :NAME IS NULL:2008/11/18(火) 22:43:24 ID:???
>>5-6
見た目はきれいだったけど、いまいちだったな。バグが多すぎる。

104 :NAME IS NULL:2008/11/18(火) 23:03:19 ID:???
SQLiteSpyわりとよかったよ

105 :NAME IS NULL:2008/11/18(火) 23:16:59 ID:???
sqlitespyとtksqliteが双璧か

106 :NAME IS NULL:2008/11/21(金) 00:24:01 ID:???
tksqlite久々に更新されてるね。
Mac、Linuxで使えるのがありがたい。

107 :NAME IS NULL:2008/11/23(日) 01:21:35 ID:???
Macで使えるのか?

108 :NAME IS NULL:2008/11/23(日) 05:25:49 ID:???
Tiger 以降の Mac OS X でターミナル開いて
sqlite3 って打ってみろ


109 :NAME IS NULL:2008/11/23(日) 11:02:13 ID:???
話の流れからすればどう見てもTksqliteはMacで使えるのかって話だろ。
せめて2こ上のレスくらい嫁よ。

110 :NAME IS NULL:2008/11/23(日) 13:22:56 ID:???
日本語むずかしいネ

111 :NAME IS NULL:2008/11/24(月) 16:28:32 ID:???
>>106 は Mac で使えるって言ってるのに >>107 の質問も無いよなあ、と思わなくもない

112 :NAME IS NULL:2008/11/24(月) 16:53:14 ID:???
それってだたの揚げ足取りじゃん。しょうもねえところつっこんでんじゃねえよ

113 :NAME IS NULL:2008/11/24(月) 20:44:07 ID:???
いやいや>>107はかなりずれた馬鹿だよ
わざわざ使えるって言ってる奴になんで再度聞くの?
お前は動かない事を知ってるとか、そういう事情でもあったの?

114 :NAME IS NULL:2008/11/24(月) 20:56:53 ID:???
>>113
108は?108はどうなの?

115 :NAME IS NULL:2008/11/24(月) 23:27:01 ID:???
意地悪だなぁ、本人に訊くなんてw

116 :NAME IS NULL:2008/11/25(火) 06:33:41 ID:???
>>108>>107しか見ずに脊髄反射しただけだろ
せめて2こ上のレスくらい嫁よ。でFA

117 :NAME IS NULL:2008/11/25(火) 07:37:18 ID:???
>>107の言い方には「これって本当?」的なニュアンス(英語で言う"Really?!")が
多分に含まれていると思うし、
>>106の内容がネタや勘違いである可能性も含めて、>>106本人を含めた全員に
それを発しているのだから(>>106宛のレスアンカーが無いのはそういうことだろう)、

これは「知ってる奴全員に」「情報の真偽を問うている」という自然な反応の一種とするのが正解であって、
「使えるって言ってる奴に」「再度訊いている」というのは、随分狭い見方・・・というより、
>>107おかしなことを聞き返していることにしたかったので曲解してみました、っていう痛い頑張りを感じる。

118 :NAME IS NULL:2008/11/25(火) 16:13:14 ID:???
何でそんながんばってんの?w

119 :NAME IS NULL:2008/11/25(火) 16:35:23 ID:???
障害持ちだから

120 :NAME IS NULL:2008/11/25(火) 17:27:38 ID:???
他人がキャッチボールで捕りこぼした時
捕りこぼした奴が悪い!それ位捕れよ!何でそんな下手糞なんだ!
投げた奴が悪い!変な方投げるなよ!何でそんな下手糞なんだ!
なんて言ってて楽しいのか?自称外野諸君(笑)は

121 :NAME IS NULL:2008/11/25(火) 18:39:31 ID:???
野球にもキャッチボールにも興味ない

122 :NAME IS NULL:2008/11/25(火) 18:49:23 ID:???
一行レスを軽く指摘されただけでここまで顔真っ赤に長文自己擁護入れる奴始めて見た

123 :NAME IS NULL:2008/11/25(火) 19:33:08 ID:???
おまえらって本当にSQLiteと関係ないところで盛り上がるな。
しかも話のネタがネガティブだ。

124 :NAME IS NULL:2008/11/25(火) 20:14:12 ID:???
>>123
このスレでSQLiteの話はするなよ。荒れるから。

125 :NAME IS NULL:2008/11/25(火) 20:14:19 ID:???
だってSqlite良いとこばっかで詰まんないし

126 :NAME IS NULL:2008/11/27(木) 16:23:58 ID:???
SQLiteは良いものなんだが、
SQLiteを使う連中がゴミなんで、
SQLiteは採用しないことにしました

このスレでそのことを学びました
ゴミの皆さん、ありがとう

127 :NAME IS NULL:2008/11/27(木) 16:28:04 ID:???
SQLiteは良いもの
皆さん、ありがとう
だけ読んだ

128 :NAME IS NULL:2008/11/27(木) 16:31:20 ID:???
他人に頼らなければ何にも出来ない人なんですね
いいんですよ
ゆとり世代ではそれが普通です

129 :NAME IS NULL:2008/11/27(木) 16:40:17 ID:???
ゆとりモドキの30台ニートにマジレスしてやるなよw

130 :NAME IS NULL:2008/11/27(木) 17:43:46 ID:???
ゴミユーザが一人減った。これは喜ばしいことだ。

131 :NAME IS NULL:2008/11/27(木) 21:12:09 ID:???
俺一人生き残ればいい

132 :NAME IS NULL:2008/11/27(木) 23:14:31 ID:???
SQLite を本当に使いこなしてる奴は
「SQLite を使ってます」なんてアッピルしない。

SQLite ってのはそういうものだ。


133 :NAME IS NULL:2008/11/28(金) 00:46:58 ID:???
つーか、SQLiteて.netならSystem.Data.SQLiteを入れてデータベースファイル作ってパスを指定するだけじゃね?
あとはADOチックにやればどうにでもなると思うんだが
こんだけ騒いでるバカがいるって事は何か深くて複雑な機能でもあるのか?

134 :NAME IS NULL:2008/11/28(金) 03:11:14 ID:???
ないよ

135 :NAME IS NULL:2008/11/28(金) 10:30:03 ID:???
LINQ to SQLiteが欲しいんだろう

136 :NAME IS NULL:2008/11/29(土) 18:02:35 ID:???
System.Data.SQLite は ADO.NET Entity Framework 経由で
普通に LINQ をサポートしてるんだが


137 :NAME IS NULL:2008/11/29(土) 18:11:13 ID:???
世の中には、完全にstep by stepで手取り足取り説明した
日本語のhow to本がないとダメってのが相当数いる。
名前の露出が増えるとそういうのがいっぱい群がってくる。

138 :NAME IS NULL:2008/11/29(土) 18:26:37 ID:???
>>137
amazon.co.jp で検索すれば2冊見つかるよ


139 :NAME IS NULL:2008/11/30(日) 01:03:21 ID:???
>>132
うん。アッピルしないね。

140 :NAME IS NULL:2008/11/30(日) 01:09:11 ID:???
俺も2年ぐらいずっと使ってるけど、一度もアッピルした事はないよ。普通そうじゃない?

141 :NAME IS NULL:2008/11/30(日) 10:44:20 ID:???
>>137
そんな奴はITに向いてない気がしないでもないw

142 :NAME IS NULL:2008/11/30(日) 23:36:16 ID:???
非OS環境の組み込みシステムでSQLITE使おうと思うのですが、アドバイスください

143 :NAME IS NULL:2008/12/01(月) 00:08:24 ID:L3Ls6oBT
K&Rを100回読み直す。

144 :NAME IS NULL:2008/12/01(月) 00:16:23 ID:???
なるほど〜その手がありましたかw

145 :NAME IS NULL:2008/12/01(月) 15:16:21 ID:???
使えると便利だね

146 :NAME IS NULL:2008/12/02(火) 15:17:27 ID:???
>>142
こんなクソスレで質問してないで、さっさと勉強しろ

ここはクソどもが仲良く集う腐海だ

147 :NAME IS NULL:2008/12/02(火) 16:51:41 ID:???
>>146
やぁ、クソ

148 :NAME IS NULL:2008/12/04(木) 23:05:05 ID:???
>>142
ファイルの読み書きはあるの? 無いとつらいよ。

149 :NAME IS NULL:2008/12/06(土) 22:44:33 ID:rhR4mcMZ
cureses ベースでターミナルでサクサク動く、
sqlite ファイルをいじるツールってないでしょうか

150 :NAME IS NULL:2008/12/06(土) 22:47:35 ID:rhR4mcMZ
http://www.sqlite.org/cvstrac/wiki?p=ManagementTools
ここ見てきます

151 :NAME IS NULL:2008/12/06(土) 22:58:10 ID:rhR4mcMZ
リモートにおいてある sqlite のファイルを
ちょこちょこ修正するために sqlite コマンド
使ってクエリたたき続けるのがもう嫌になった・・・

152 :NAME IS NULL:2008/12/06(土) 23:27:04 ID:rhR4mcMZ
やっぱ、ダンプしてエディタで編集して
書き戻すのが吉か?

153 :NAME IS NULL:2008/12/11(木) 15:52:51 ID:???
>>152
sftpとかでファイルをダウンロードしてローカルで修正して戻すしかないのでは?
リモートでアクセスできれば使い勝手がいいんだけどね。

この問題で、趣味で作ろうとしているWebアプリのDBを
PostgresとかMySQLのサーバ型にした。外部からのアクセスが簡単だし。

154 :NAME IS NULL:2008/12/11(木) 16:29:07 ID:???
ちょこちょこ手で修正してる時点でアホだろ

155 :NAME IS NULL:2008/12/11(木) 17:04:55 ID:???
アホといいたいがそういう使い方が出来るのもSQLiteだからな

156 :NAME IS NULL:2008/12/11(木) 17:13:45 ID:???
>>154
アプリの開発中にどうやってDBを修正してるの?

157 :NAME IS NULL:2008/12/11(木) 18:07:18 ID:???
>>156
テストケース作って自動化してるに決まってるじゃん

158 :NAME IS NULL:2008/12/11(木) 18:33:54 ID:???
マスタメンテとかでちょこちょこ手で修正したい状況は普通にあるんじゃない?

Ruby 厨なら ActiveRecord + irb とか Rails Scaffold + w3m とかでやるかな。

159 :NAME IS NULL:2008/12/11(木) 18:35:34 ID:???
ならtksqliteでも使っとけよ

160 :NAME IS NULL:2008/12/11(木) 19:30:45 ID:???
SQL打つのが苦痛になるほど頻繁にいじってるのは明らかにまずい
普通はRubyでもPerlでも何でもいいけどスクリプト使うとか考えるだろ
そういう発想が出てこずにcursesベースのツールが欲しいとか
根本的にプログラマに向いてないわ

161 :NAME IS NULL:2008/12/11(木) 20:14:12 ID:???
>>160
>そういう発想が出てこずに〜根本的にプログラマに向いてないわ
こういうひとつの要素だけで決め付ける奴って、
経験的に言って使えない。

162 :NAME IS NULL:2008/12/12(金) 00:07:26 ID:???
>>160
そんなんじゃ流石に根本的に向いてないとは言えないわ

163 :NAME IS NULL:2008/12/12(金) 02:25:31 ID:???
WEBの開発でポスグレやMyやもろもろとSQLiteを使ってきたけど、なーんとなくSQLiteで作ったサイトの方が
サーチエンジンにヒットしやすいような気がしてならない

164 :NAME IS NULL:2008/12/12(金) 03:12:05 ID:???
>>163
どんなジンクスだよw

165 :NAME IS NULL:2008/12/12(金) 04:51:37 ID:???
>>163
これはすごい都市伝説だ
SQLiteを布教する際の切り札とさせてもらうw

166 :NAME IS NULL:2008/12/12(金) 09:56:58 ID:???
>>161
根本的を経験的に変えて同じようにひとつの要素で判断してるだけやん

167 :NAME IS NULL:2008/12/12(金) 10:05:31 ID:???
>>166
なんでこんなところで関西弁?
キモいなあ

168 :NAME IS NULL:2008/12/12(金) 10:07:51 ID:???
うわ必死

169 :NAME IS NULL:2008/12/12(金) 10:15:06 ID:???
>>168
うわ必死(笑)


170 :NAME IS NULL:2008/12/12(金) 10:16:48 ID:???
朝から必死やなあ

171 :NAME IS NULL:2008/12/12(金) 10:17:54 ID:???
でも>>166がいちばん必死だよね


172 :NAME IS NULL:2008/12/12(金) 11:16:56 ID:???
SQLiterはクズしかいないんで、
このスレ巡回先から外す
お元気で

173 :NAME IS NULL:2008/12/12(金) 11:26:15 ID:???
>>172
なんでいちいち宣言するの?クズですね

174 :NAME IS NULL:2008/12/12(金) 11:49:28 ID:???
160だけど、俺の代わりに必死になってくれてる人が居てワロタ

175 :NAME IS NULL:2008/12/12(金) 13:04:46 ID:???
>>174
プログラマに向いてない人乙

176 :158:2008/12/12(金) 13:53:46 ID:???
>>159
リモートの DB ファイル修正をしたいという話だから使えないんじゃないかな?

177 :NAME IS NULL:2008/12/12(金) 21:59:21 ID:???
マウントすればいいだけじゃない

178 :NAME IS NULL:2008/12/12(金) 22:24:19 ID:???
>>172
やっとこのスレのクズさ加減にお気づきで・・・。僕なんて
もう2スレ目から気が付いてました

179 :NAME IS NULL:2008/12/13(土) 04:22:35 ID:???
>>178
お前の未練がましさは異常w

180 :NAME IS NULL:2008/12/13(土) 12:34:09 ID:hU9rF/cW
RDBMSの時代の終わりが見えてきた
ttp://d.hatena.ne.jp/nowokay/20081212#1229071535

> SSDを前提にしたプログラムモデルになれば、そもそもシーク時間と戦うこともなく、
> ストレージを意識せずにプログラムが組めます。そうなったとき、アプリケーションのデータを
> 永続化するためにRDBMSをわざわざ使うことはないでしょう。
> RDBMSが最初に消えるのは、ローエンドの、SQLiteやDerbyなどが使われている分野だと思います。
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


181 :NAME IS NULL:2008/12/13(土) 12:35:32 ID:???
>>180
釣られませんよ

182 :NAME IS NULL:2008/12/13(土) 15:36:01 ID:???
すげーな。SSDに夢見過ぎだ。

183 :NAME IS NULL:2008/12/13(土) 16:00:33 ID:???
シークがなくなったからってランダムとシーケンシャルが同じ速度出るわけじゃないのにねぇ

184 :NAME IS NULL:2008/12/13(土) 16:38:01 ID:???
あーあーあーあーあーあーあー

185 :NAME IS NULL:2008/12/13(土) 16:48:31 ID:???
すげーな
こんな夢ばっか見てたら毎日が楽しそうだ

186 :NAME IS NULL:2008/12/13(土) 19:56:14 ID:hU9rF/cW
お前ら涙目w
自我崩壊して失禁あうあうあーwww

187 :NAME IS NULL:2008/12/13(土) 21:32:55 ID:VrVQ8NPb
>>180
目に精子が入って毒が回ったんじゃねえの?

188 :NAME IS NULL:2008/12/13(土) 21:51:59 ID:???
叩かれ過ぎワロタ

189 :NAME IS NULL:2008/12/13(土) 22:39:32 ID:???
知ってる言葉を並べただけだな

190 :NAME IS NULL:2008/12/14(日) 00:54:11 ID:???
時代はBerkeley DBなんだよ!
Ω ΩΩ< な、なんだってー

191 :NAME IS NULL:2008/12/14(日) 09:01:27 ID:???
初歩的な質問で恐縮ですが

SQLiteを使って4〜5人くらいが同時アクセスする様なDBは可能でしょうか?
NASにアプリをおいて端末で閲覧更新をする予定です。

本体をNASに置くような形になります。

最初はMySQLなどを利用しようかと思っていたんですが
小さな貧乏部署での非常にローカルなデータ処理に使うので
一台をサーバーにするという事は却下されました
絶えず電源の投入されているマシンはNASだけ(しかも水牛)ということに
なってしまいました

ご教授よろしくお願いします


192 :NAME IS NULL:2008/12/14(日) 12:23:35 ID:???
できるかどうかと訊かれれば、できるとしか答えようがないな。
しかし、ユーザ管理を一から実装するなど、いろいろ考えると、MySQLの方が遙かに楽に構築できると思はれ。


193 :NAME IS NULL:2008/12/14(日) 12:51:07 ID:???
ユーザー管理なんて要らないんでしょ
共有フォルダにあるエクセルファイルを皆でいじくり倒すより何ぼかマシになれば、それで良いって考えじゃない
その前提で行くならSQLiteは最適解だし何の心配も要らないだろう

194 :NAME IS NULL:2008/12/14(日) 14:11:21 ID:???
ネットワーク経由で開けるの?

195 :NAME IS NULL:2008/12/14(日) 22:18:00 ID:???
>>191
自分のPCをサーバー代わりにすればいいじゃないか。
Webアプリ作ってApache入れて電源常時ON。バックアップはちゃんと取れ。
「こりゃいいね」ってことになったらサーバー用に中古ノートPCでも買えば。

でも191のとこならAccessのほうがいいと思うけどね。


196 :NAME IS NULL:2008/12/15(月) 02:44:45 ID:T2sjSdK9
SQLite3はEUCに対応していないのに、
なんでSQLite ManagerはEUC対応してるんだ!。
(ていうか、古い仕様のままじゃん。)

SQLite3のODBCがEUC対応してないので、
SQLite Managerで見れる日本語が、
Excelで文字化けして困っていまつ。



197 :NAME IS NULL:2008/12/15(月) 06:58:43 ID:KkwlgNZa
よろしくお願いします。SQLite3でPDOで処理しています

端末A側で時間のかかるINSERTを実行すると同時に
端末B側でINSERTを実行する
  →○端末Aの処理が終わるまで待ってくれる

端末A側でトランザクションを開始してからINSERTを実行すると同時に
端末B側でトランザクションを開始してINSERTを実行する
  →×一切待たずにdatabase is locked エラー

PDO::setAttribute(PDO::ATTR_TIMEOUT, 1000);
は入れてるのですが




198 :197です:2008/12/15(月) 08:14:57 ID:KkwlgNZa
>>197 の補足です

PDOで処理しています
INSERT でトランザクションかけている時に
他のユーザでINSERT しようとすると database is locked となります
数秒待ってから、database is locked の表示が出るのではなく
すぐエラーの表示になってしまいます

書き込みが処理がダブった場合に、片方のユーザは待つようにしたいのです
http://www.bumblebury.com/function.sqlite-busy-timeout.html
ココを見ると、初期値ではタイムアウトが設定されている
となっているのですが、処理待ちしてくれません

どうすればいいのでしょうか


199 :NAME IS NULL:2008/12/15(月) 12:57:07 ID:???
今時EUCという時点で知障

200 :NAME IS NULL:2008/12/15(月) 13:50:30 ID:???
setAttributeじゃなくてメソッド直接呼んでは?

201 :NAME IS NULL:2008/12/15(月) 15:29:59 ID:???
http://inagisou.homeip.net/cgi-bin/web_proxy.cgi


202 :NAME IS NULL:2008/12/22(月) 13:21:44 ID:XnlanDxx
質問です。
SQLiteとPHPで日記つくってるんですが、
日記を読むページに、
「次の日の日記へ」と「前の日の日記へ」というリンクを張ってます。

これは、「read_diary_day?id=$a」みたいにして、
現在読んでる日記のidに、1足したものと、1引いたものをリンクとしているんですが、
あるレコードを削除した場合、auto-incrementなフィールドの値がひとつ飛んでしまいます。

この場合、1足したりしてもそのidがないわけなんですが、
あるレコードを削除した場合にも機能する、
「次の日の日記」と「前の日の日記へ」のリンクはどう書けばいいんでしょうか?

203 :NAME IS NULL:2008/12/22(月) 13:22:33 ID:???
「read_diary_day.php?id=$a」でした。

204 :NAME IS NULL:2008/12/22(月) 13:28:27 ID:???
その日より小さい値の中で一番大きいもの→前回
その日より大きい値の中で一番小さいもの→次回

205 :NAME IS NULL:2008/12/22(月) 14:04:55 ID:???
>>204

な る ほ ど − !!!!!!
ありがとうございました。

206 :NAME IS NULL:2008/12/22(月) 14:13:45 ID:???
当日に、翌日と前日の参照を保持しておく。
当日を削除する場合は、前日のレコードの翌日、翌日のレコードの前日をそれぞれ更新してから、当日を削除する。

ってのはどう?

文章じゃ分かりづらいけど、やってることはLinked List的にエントリを関連づけてっるてこと。

207 :NAME IS NULL:2008/12/22(月) 16:02:54 ID:???
こんな感じで、できました。

// 前後の日記のidを取得(削除されてても大丈夫)

$back_day = sqlite_single_query($db, "select max(id) from diary where id < '{$page_id}';");
$next_day = sqlite_single_query($db, "select min(id) from diary where id > '{$page_id}';");

208 :NAME IS NULL:2008/12/22(月) 16:20:02 ID:???
やるじゃん

209 :NAME IS NULL:2008/12/22(月) 21:21:41 ID:Wo8xBrFC
あなたが老人になってもその日記をつけてたら遅くなりそうな方法だけどね。
もし3000歳になってもまだつけていたら100万ページを超えるんだからね。
よく考えて。

210 :NAME IS NULL:2008/12/22(月) 22:20:28 ID:???
3000年後は100万件のソートなんぞ0秒ですからwww

211 :NAME IS NULL:2008/12/22(月) 23:33:52 ID:???
そもそも10年もたったらハードの処理速度向上で補える気がw

212 :NAME IS NULL:2008/12/22(月) 23:42:01 ID:???
てかインデックス張るんだから今だって0秒だからw

213 :NAME IS NULL:2008/12/23(火) 00:32:41 ID:ReeSTEy9
>>212
馬鹿発見。

214 :NAME IS NULL:2008/12/23(火) 01:55:45 ID:???
どうせ日記なんか三日で飽きるんだから、インデックスすら要らないだろ。

215 :NAME IS NULL:2008/12/23(火) 02:21:05 ID:DXO/l3wa
この程度で遅いと思ってるやつって検証もしないで言ってんのかね?

216 :NAME IS NULL:2008/12/23(火) 03:15:37 ID:???
たかが100万件、今だって1秒かからん

217 :NAME IS NULL:2008/12/23(火) 08:18:44 ID:???
>>215
それは突っ込み方がおかしい。
これはむしろ、検証という次元で語るときだけ意味のある遅さだろ。
体感の世界で語るぶんにはどうでもいい差なんだから。

218 :NAME IS NULL:2008/12/23(火) 08:26:54 ID:???
>>213
やっと発見できたか
お前が馬鹿という事実を

219 :NAME IS NULL:2008/12/23(火) 11:09:00 ID:???
Jane Doe Styleにも利用されてるようですが、
どの部分に使ってるんだろ。
スレの実データはdatとかの外部ファイルだよね。
それらへのインデックス程度かな。

220 :NAME IS NULL:2008/12/23(火) 13:00:36 ID:???
覗いてみたらこんなんだった

CREATE TABLE idxlist (
datname TEXT PRIMARY KEY,
title TEXT,
last_modified TEXT,
lines TEXT,
view_pos TEXT,
idx_mark TEXT,
uri TEXT,
state TEXT,
new_lines TEXT,
write_name TEXT,
write_mail TEXT,
last_wrote TEXT,
last_got TEXT,
read_pos TEXT,
record_be TEXT,
etc1 TEXT,
etc2 TEXT
);

idxファイルの代わり程度かね

221 :NAME IS NULL:2008/12/24(水) 16:58:45 ID:???
一覧表示情報とインデックス程度みたいだねー。
将来的なシーンを見据えた拡張という感じかな。

222 :209:2008/12/25(木) 11:48:40 ID:???
計算量の少ないアルゴリズムを追い求めないなんて。。。
SQLite使いは、やっぱカスグラマばっかだな。

223 :NAME IS NULL:2008/12/25(木) 11:51:45 ID:???
>>222
騙りは駄目ですよw

224 :NAME IS NULL:2008/12/25(木) 17:39:48 ID:???
ボトルネックでもない場所チューニングしだす馬鹿は、会社には要らないけどね

225 :NAME IS NULL:2008/12/25(木) 21:30:15 ID:???
つーか掲示板の書き込みから
SQLiteを使ってる奴はカスばっかとかいう結論に至る方が
ロジックとしておかしいよな。

226 :NAME IS NULL:2008/12/26(金) 00:55:53 ID:fRKozh9g
DB板に建てたのが間違い。
DBエンジニアから見たらアホすぎなんだろ。

227 :NAME IS NULL:2008/12/26(金) 01:27:01 ID:???
粘着くんの発狂っぷりを笑うスレ

228 :NAME IS NULL:2008/12/26(金) 19:20:07 ID:???
>>220
スレがたくさん保存されてるとき、大量のidxファイルを読み込むより
SQLiteでデータベース化されたものを読み込んだほうが数十倍以上早い。
これは2003年にOpenJane nonoがJane派生で初めて実装して威力を発揮。
以降、他の派生でもSQLiteによるidx管理が普及した。
StyleのはLovelyがベース。(もっともSQLite3.xにしてからは作り直しただろうけど)

229 :NAME IS NULL:2008/12/28(日) 13:58:01 ID:???
Lovelyのソースに用意してあるSQLite3用のをそのまま使ってる程度だよ

230 :NAME IS NULL:2008/12/29(月) 22:50:50 ID:???
SQLiteManagerで、
パス : データベースをアップロード
の下の空白は、何を入力すればいいの?

231 :NAME IS NULL:2008/12/29(月) 22:54:50 ID:???
自己解決した
パスの名前を自分で入力するらしい

232 :NAME IS NULL:2008/12/29(月) 22:58:24 ID:???
これってデーターベースを削除しても消えないのがデフォなの?

233 :NAME IS NULL:2008/12/30(火) 11:44:32 ID:???
なんのこっちゃ。
何を期待して何をしたらどうなった、くらい書いてくれ。

234 :NAME IS NULL:2008/12/30(火) 15:30:22 ID:???
データーベースをSQLiteManager(WEB版)で削除したら、
その画面では見えなくなったんだけど、
Windowsエクスプローラーで見たら
ファイルが消えないで残ってるんだよ

235 :NAME IS NULL:2008/12/30(火) 15:30:55 ID:???
ビューってなに?
どう使うの?

236 :NAME IS NULL:2008/12/30(火) 15:38:13 ID:???
>>234
ファイルをオープンしているプロセスが残ってんじゃないの?
怪しいプロセスを殺してみるか、再起動してみたら?

237 :NAME IS NULL:2008/12/30(火) 16:21:03 ID:???
PHP + PDO + SQLite + プリペアードステートメントってできる?

238 :NAME IS NULL:2008/12/30(火) 16:30:20 ID:???
SQLiteはデーター型が無いと聞いていましたが、
実際見てみると、15くらいの型があるのですが、
どういうことでしょうか?

239 :NAME IS NULL:2008/12/30(火) 17:00:15 ID:???
>>238
integer型にテキストが入るとかそんな話だった気が

240 :NAME IS NULL:2008/12/30(火) 17:21:04 ID:???
phpSQLiteAdminと
SQLiteManagerと
どっちを使うべき?

241 :NAME IS NULL:2008/12/30(火) 18:08:19 ID:???
注意点としては、カラムに指定するデータ型は
名目的なものであり、制約として機能しない点
などがある。 SQLiteでは(ROWIDを除き)カラム
に宣言した型にかかわらず、どのようなデータ
も格納できる。 また、カラムの長さも常に可変
であり、長さや精度の指定は意味をもたない。

---------------------------------

↑これかな?
何をいれても、意味ないってこと?

242 :NAME IS NULL:2008/12/30(火) 18:30:22 ID:???
>>241
利用する側で意味がある、場合もある。
言語ネイティブの型に結び付けたり、バリデータで利用(例えば数値型
だったら文字列が投入されるとエラーにするとか)したり。

243 :NAME IS NULL:2008/12/30(火) 22:32:54 ID:???
primary keyを複数設定できるという、
仕様が理解できない。

244 :NAME IS NULL:2008/12/30(火) 22:45:15 ID:???
理解できないのが理解できないわ。

245 :NAME IS NULL:2008/12/30(火) 23:35:55 ID:???
エスパー以外理解不能。

246 :NAME IS NULL:2008/12/31(水) 11:24:05 ID:???
PHPのプログラム側からSQLiteのデーターベースを作成して、
それをSQLiteManagerで見ようと思っても、
表示されないんだけど、これを認識させるには
どうしたらいいの?

247 :NAME IS NULL:2008/12/31(水) 11:28:07 ID:???
SQLiteはdeleteを実行しても表示ができなくなるだけ。
VACUUMを実行するまでデータベースから消去されな
い。(つまり、VACUUMを実行するまでファイルサイズ
が減らない。)

248 :NAME IS NULL:2008/12/31(水) 11:32:03 ID:???
http://www.phpbook.jp/database/sqlite/index2.html

ここのページのサンプルコードを見て、
sqlite_open('test.db', 0666, $sqliteerror);
このコードを実行すると、もしtest.dbがカレントディレクトリに
無い場合は自動的に作成されます。

しかし、そのtest.dbをSQLiteManagerで見ても
表示されないのです。どうして?

249 :NAME IS NULL:2008/12/31(水) 12:11:40 ID:???
http://blog.datoka.jp/web/854.html

ここのページを見て、

「パス情報のバックスラッシュをstripslashes()さ
れていて、気づくとドライブルートに\を抜かれ
た長いファイル名のDBが自動的に作られてい
た・・。つまり全然関係ないところに作られた、
できたてDBの中身を見ていたわけで。どうりで
テーブルが見えないわけだ。」


この処理をしたんですが、これでいいのかな?

250 :NAME IS NULL:2008/12/31(水) 12:17:25 ID:???
http://saboten009.blogspot.com/2008/10/sqlitegui-sqlite-manager.html

ここのページに、

「画面上で操作したDBファイル以外は認
識しないので既に存在するSQLiteファイル
もFTPでアップしたり削除したファイルは画
面で反映されない」

って書いてあるのだが、これを認識させる方法はないのか?

251 :NAME IS NULL:2008/12/31(水) 12:24:42 ID:???
できた!できた!できた!できた!できた!できた!
ついにできた!!!!!!!!!!!!!

252 :NAME IS NULL:2008/12/31(水) 12:38:34 ID:???
原因は>>249だった。

こちらが入力した文字列に、勝手にスラッシュを付加されてしまって
おかしくなっていた。
>>249の処置をして、(勝手にスラッシュを付加されないようにして)
「データベースをアップロード」にチェックをいれて、
それで、あらかじめハードディスクの中に作った(PHPプログラムとかで)
データーベースを指定して「保存」ってやったら、画面の左側の
メニューに出てきた。感動。

253 :NAME IS NULL:2008/12/31(水) 19:14:50 ID:/jDWOWFv
C#からSqliteを使ってるんですが、Selectで得た行の総数って別にcount(*)しないとわからないんでしょうかね?


254 :NAME IS NULL:2008/12/31(水) 19:26:17 ID:???
嵐の予感!!!

255 :NAME IS NULL:2009/01/01(木) 00:39:53 ID:???
また認識しなくなった。なんでだ?

256 :NAME IS NULL:2009/01/01(木) 02:01:55 ID:???
sqlite_openで生成したデーターベースは
SQLiteManagerで認識できないのか?

257 :NAME IS NULL:2009/01/01(木) 02:52:01 ID:???
>>256
そろそろウザい

258 :NAME IS NULL:2009/01/01(木) 03:03:23 ID:???
SQLite2と
SQLite3と
どっちを使うべき?

259 :NAME IS NULL:2009/01/01(木) 03:03:55 ID:???
>>257
おまえこそウザイ

260 :NAME IS NULL:2009/01/01(木) 03:10:24 ID:???
自分の「理想の状態」と違った書き込みをする
「異物」が現われたので排除しなきゃ!って思ったんだね
キモイからくんなよ知的障害者

261 :NAME IS NULL:2009/01/01(木) 04:08:34 ID:???
アクセスを超えた!!!

262 :NAME IS NULL:2009/01/01(木) 11:54:33 ID:???
ここはお前の日記帳じゃねぇんだよ
誰からもレスもらえてない事にいい加減気づけ

263 :NAME IS NULL:2009/01/01(木) 13:14:31 ID:???
>>262
おまえ、どれだけ悲惨な環境で育ったんだ?
今現在、少しは生活が良くなったのか?
だとしたら良かったな。 抑圧された悲惨な生活から何とか抜け出せたなら、次は知性とか教養を身につけないとな。
血の滲むような努力をしてきた君なら、きっと教養は身につけられるだろうから頑張れよ。
もしかしたら、その曲がりきった卑しい根性も、少しは矯正できるかもしれないぞ。

264 :NAME IS NULL:2009/01/01(木) 15:50:30 ID:???
と、いうような、勝手な妄想を膨らませないと気を落ち着けられないという
263本人の人格を婉曲に表現した独特の自己紹介でした。

265 :NAME IS NULL:2009/01/01(木) 16:08:59 ID:???
煽り合戦というのは、大抵の場合、
スレの趣旨にそぐわない輩がエスカレートさせるもの。

>>258
好きな方使えやゴラァ!

266 :NAME IS NULL:2009/01/01(木) 18:41:02 ID:???
Sqliteのトランザクションであるテーブル内に存在していたらインサートを行うとか
条件分岐って可能でしょうか?
可能ならそういう情報ってどこを探せばいいんでしょうか?
ぐぐってるんですが、処理を早める目的の物位しか見つかりませんでした。


267 :NAME IS NULL:2009/01/01(木) 23:40:44 ID:???
>>265
まあまぁ。そう突き放さなくても・・・

>>258
どうするべき?・・って問い方はどうなのかな。
そもそも Sqlite3 があるのに Sqlite2 を選択枝に入れる貴方の考えはいかに。

268 :NAME IS NULL:2009/01/02(金) 01:02:53 ID:AMNv/nir
SQLite4からはGPLにするべき。

269 :NAME IS NULL:2009/01/02(金) 01:33:12 ID:???
ざわ・・ ざわ・・

270 :NAME IS NULL:2009/01/02(金) 01:45:50 ID:???
>>268
GPLにする理由は何?

271 :NAME IS NULL:2009/01/02(金) 09:00:13 ID:AMNv/nir
>>270
今のライセンスだとドザが勝手に使うだろ。
GPLにしとけばLinux専用状態にできる。

272 :NAME IS NULL:2009/01/02(金) 09:11:24 ID:???
どこでも動くことが価値のひとつでもあるのに何言ってんのこのハゲは

273 :NAME IS NULL:2009/01/02(金) 09:54:38 ID:???
>>272
Windowsはオープンソースになにも貢献してないんだから勝手に使ったら
駄目だろ。
成果だけ横取りかよ。

274 :NAME IS NULL:2009/01/02(金) 10:02:56 ID:???
影響はでかいし、それなりの貢献もしてるだろ。

275 :NAME IS NULL:2009/01/02(金) 10:09:06 ID:???
むしろ成果だけ横取りしてるのは>>273だけどな。
胸に手をあてて考えてみろ。

276 :NAME IS NULL:2009/01/02(金) 10:14:12 ID:???
SQLiteはGNUプロダクトの一員として自覚が足りないようですね。

277 :NAME IS NULL:2009/01/02(金) 10:28:19 ID:AMNv/nir
GNUを使って作っておきながらGNUへ敬意を払わないとは駄目DBだな。
使えねー。

278 :NAME IS NULL:2009/01/02(金) 13:09:39 ID:???
過疎スレだから釣れませんね

279 :NAME IS NULL:2009/01/02(金) 14:02:10 ID:???
釣れないのは釣りが下手くそだから

280 :NAME IS NULL:2009/01/03(土) 21:22:14 ID:???
SQLitemanagerで、「データーベースのアップロード」ってのが
また使えなくなった。なんでだ?

281 :NAME IS NULL:2009/01/03(土) 21:29:25 ID:???
どうもIEだとjavascriptが使えるようだ。
firefoxだと動かない。

282 :NAME IS NULL:2009/01/03(土) 21:40:34 ID:???
レコード2つしかないのに
ファイルサイズが6MBもあります。
なんで?

283 :NAME IS NULL:2009/01/03(土) 23:18:46 ID:???
vacuum してないだけじゃね?

284 :NAME IS NULL:2009/01/03(土) 23:49:26 ID:???
phpsqliteadmin
ウチの環境だとなぜか動かない。
真っ白なページが出るだけ。なんで?

285 :NAME IS NULL:2009/01/04(日) 01:05:56 ID:???
その質問から正しい理由説明できたらもはやホラーだろ

286 :NAME IS NULL:2009/01/04(日) 01:26:25 ID:???
SQLite2の管理ツールでベストなのはどれ?

287 :NAME IS NULL:2009/01/04(日) 02:10:24 ID:???
SQLiteManagerなんだけど、
ファイルの選択をIEでやって、
そこででてきたパス情報をコピペして、
firefoxにはりつけると、なぜかうまくいった。

バグなんだろうけど、もうアップデートないんだろうな。

288 :NAME IS NULL:2009/01/04(日) 02:15:22 ID:???
スレにキチガイが住み着くのって、本当に前触れが無いんだな

289 :NAME IS NULL:2009/01/04(日) 11:53:31 ID:???
>>288
自己紹介しろなんて誰も命令してない

290 :NAME IS NULL:2009/01/04(日) 11:54:15 ID:???
原因がわかったっぽい。

パスの区切りに¥が使われていたのを、
勝手に/に直していたんだが、
これがよくないみたい。

Windows、Macはパスの区切り文字(デリミタ)は¥(バックスラッッシュ)なんだから、
そのまま入れればいけるっぽい。

291 :NAME IS NULL:2009/01/04(日) 12:07:45 ID:???
IEでやると、sqlitemanager直下に入ってしまうんだが、
firefoxでやるとなぜかちゃんとこちらの指定したフォルダに入る。

これってやっぱりバグなんだろうな。ブラウザによって挙動が
違うわけだから。

292 :NAME IS NULL:2009/01/04(日) 13:00:04 ID:???
どうもサイズが0だと読み込みというか認識できないみたいだな
ファイルの中になんかデーターが入っていれば認識できるみたい。

293 :NAME IS NULL:2009/01/04(日) 13:02:12 ID:???
バキュームってどうやるの?

294 :NAME IS NULL:2009/01/04(日) 15:05:47 ID:???
Blogでも開いてそこでやれ
sqlitemanager豚

295 :NAME IS NULL:2009/01/04(日) 17:52:03 ID:???
>>294
このスレってなんのためにあるの?
Blog、Blogって覚えたての言葉をうれしそうに連呼する猿を見ると吐き気がする。
手元にある書籍で思いっきりひっぱたいてやりたい気分。氏ねw
日本のSQLiteが終わってるのはコミュニケーション能力のないキモヲタしかつかわないから。
そういう豚は「BlogBlogBlog」ばっか。だからユーザーが育たない。

296 :NAME IS NULL:2009/01/04(日) 18:05:37 ID:???
>>295
じゃあテメェがユーザーを育てろよ

297 :NAME IS NULL:2009/01/04(日) 18:15:17 ID:???
SQLiteは終わってないどころか、けっこう流行ってると思うけどねえ。
管理ツールみたいのは自分の場合は普段あまり使わないからよくわからん。

298 :NAME IS NULL:2009/01/04(日) 21:13:23 ID:???
>>296
いやな性格だねぇ〜
オレ、このスレでホント助かった。昨年の5月に知って SQlite3 の入門本?を一冊買ってから疑問にぶち当たった時(そもそも SQL 無知)ここで助けてもらった。
とにかく、始めは情報が多すぎてとてもとてもポイント絞れない。直面している大きな壁(当人にはマジ壁に見える)が、ここの人の回答で取り除かれたときの感動は最高。答えてクレタ人には「ありがとう」の一言でしか返せないけど俺にとっては最高の先生なわけです。

そんなもん、クグレカス・・・とか、Blogでヤレって言うのは簡単だけど、質問に答えないなら黙っといて欲しいというのがあるな。


299 :NAME IS NULL:2009/01/04(日) 23:51:33 ID:???
管理ツール(それもFirefoxのアドオン)の事聞かれてもなあ。
見てても、SQLiteじゃなくてFirefox(XUL?)の問題みたいだし。
SQLitemanager使い続けるならここで聞くよりソフトウェア板のFirefox拡張スレとか
ROMったりしてアドオンで引っ掛かりやすいとこ調べた方が早いかもよ。
SQLiteって直接API叩いたり各言語用ドライバから使ってる人の方が圧倒的に多いと思うし。

あとGUIでSQL直書きしたりするならシンタックスハイライト機能のあるtkSQLiteオススメ。

300 :NAME IS NULL:2009/01/05(月) 00:06:37 ID:???
WEB版のSQLitemanagerのほうです

firefoxのアドオン版ではありません

名前はなぜか同じだけど。

301 :NAME IS NULL:2009/01/05(月) 00:07:10 ID:???
tkSQLite

これはtcl/tkがインストールされてないと
使えないのではないか?

302 :NAME IS NULL:2009/01/05(月) 03:38:36 ID:???
自分のパソコンの中にPDOのSQLite3の
ドライバ、インストールするのはどうやるの?

303 :NAME IS NULL:2009/01/05(月) 11:48:18 ID:???
>>301
試せよ
そのカキコしてる間にDLしてexeダブルクリックすりゃわかるだろ?
1から10までここで聞きたいわけ?

>>299でやっと、やっとまともな答え貰ったのに端から疑ってかかるんだ?
お前は最低の屑質問豚だよ

304 :NAME IS NULL:2009/01/06(火) 04:34:02 ID:???
>>296
警察に通報しました

305 :NAME IS NULL:2009/01/06(火) 04:34:36 ID:???
>>294
警察に通報しました

306 :NAME IS NULL:2009/01/06(火) 08:09:59 ID:???
>>298
で、お前もSQLite使ってる日本人だから、
コミュニケーション能力のないキモヲタなんだろ?
じゃあ駄目じゃん。口だけ偉そうなこと言ったってさぁw

307 :NAME IS NULL:2009/01/06(火) 08:27:23 ID:???
普通は教えてもらってそれほど感動したなら、今度は自分が教える側に回ろうとか思うもんだけどな

1年半経って未だに質問するだけか

猿だな

答えて貰えなきゃ感謝してるはずのスレで罵詈雑言撒き散らして荒らすあたりが本当に猿

308 :NAME IS NULL:2009/01/06(火) 17:54:23 ID:???
>>306
298だけど・・ん? 突然に意味不明。

>>307
この人は 306 の人?
で、なにか俺、偉そうな事いったのかな。層感じるのは君だけじゃない?

309 :NAME IS NULL:2009/01/06(火) 18:00:56 ID:???
>308
偉そうだなんていってねぇよ

ただお前は猿並みって言ってるんだよ

一体どうすりゃ猿が偉そうに見えるってんだ

310 :NAME IS NULL:2009/01/06(火) 18:08:47 ID:???
>>309
ん・・もしかして質問者がオレって思ってるのか?
SQLite 7 スレで 298 が初書き込み。
SQLiteスレを久々に覗いてみたらこんなことになってるからさ。

猿かどうかわからないけど、勝手に思い込んでる君がハズしているよ。一瞬ポカンとなって何いってるのか理解できなかかった。

311 :NAME IS NULL:2009/01/06(火) 18:30:58 ID:???
そうか、そうか、分かったよ猿

312 :NAME IS NULL:2009/01/06(火) 19:02:34 ID:???
>>298
質問に答えないなら黙っといて欲しいというのがあるな。
お前さんの棘だらけのレスは、このスレの役に立つのかい?

313 :NAME IS NULL:2009/01/06(火) 19:47:24 ID:???
レンタルサーバーにインストールされている
SQLiteのバージョンはどうやって確認するの?

314 :NAME IS NULL:2009/01/06(火) 19:48:08 ID:???
あとSQLite2と3が共存できるって記事を読んだんだけど、
これってマジ?もしマジだとしたら、バージョンの確認は
どうやってやるんだ?

「2 and 3」
とかって出るのか??

315 :NAME IS NULL:2009/01/06(火) 20:25:38 ID:???
SELECT SQLITE_VERSION(); で SQLite のバージョンが得られる。

ってそういう話ではない?

316 :NAME IS NULL:2009/01/06(火) 20:39:17 ID:???
phpからSQLiteに接続するんだけど、
自分が接続するSQLiteのバージョンがわからないんです。

なので知りたいんですけど、どうすればいい?
とりあえず、2系と3系と両方動くのは確認しました。

でも細かいバージョンがわからない。

317 :NAME IS NULL:2009/01/06(火) 20:43:34 ID:???
<?php
$dsn = 'sqlite::memory:';
$user = '';
$pass = '';
$sql = 'SELECT sqlite_version() as version';

try {
$dbh = new PDO($dsn, $user, $pass);
$dbh = $dbh->prepare($sql);
$dbh->execute();
$result = $dbh->fetch(PDO::FETCH_OBJ);
$version = str_replace('undefined', '', $result->version);
echo $version;
$dbh = null;

}
catch (PDOException $e)
{
echo 'error: ' . $e->getMessage();
exit();
}
?>

このコードを実行したら、3.3.7って出た。

318 :NAME IS NULL:2009/01/06(火) 20:44:06 ID:???
<?php
$a=sqlite_libversion();
print $a;
?>

これを実行すると、
2.8.17
と表示されるんだが、どういう意味なんだ?

319 :NAME IS NULL:2009/01/06(火) 21:48:23 ID:???
>>317
xrea?

320 :NAME IS NULL:2009/01/06(火) 21:51:36 ID:???
>>319
それはローカルホスト。

321 :NAME IS NULL:2009/01/06(火) 23:30:00 ID:???
質問者はレス番を名乗ってくれい。
>>313 = >>314 = >>316 = >>317 = >>318 = >>320 なのか?
もしそうなら環境や状況の説明をなるべく小出しにしないように願いたい。

322 :NAME IS NULL:2009/01/06(火) 23:38:04 ID:???
SQLiteManager君だろ

323 :NAME IS NULL:2009/01/06(火) 23:44:57 ID:???
>>322
警察に通報しました。

324 :NAME IS NULL:2009/01/06(火) 23:55:53 ID:???
なんでテーブル作ったときに、
デフォルトでNULLになってんだ?

データーつっこめねえじゃねえか!

325 :NAME IS NULL:2009/01/07(水) 00:12:11 ID:???
>>324
???

326 :NAME IS NULL:2009/01/07(水) 02:33:56 ID:???
スルーしろよ

327 :NAME IS NULL:2009/01/07(水) 05:06:17 ID:???
アクセスを越えた!!!

328 :NAME IS NULL:2009/01/07(水) 18:50:34 ID:???
>>326
警察に通報しました。

329 :NAME IS NULL:2009/01/07(水) 18:51:17 ID:???
NULLってなってるフィールドには
データーは入力できないのか?

330 :NAME IS NULL:2009/01/07(水) 20:55:57 ID:???
SQLitemanagerで新規のテーブル作る時に
NULLって指定できるけど、これはどういう意味があるんだ?

331 :NAME IS NULL:2009/01/07(水) 21:17:47 ID:???
http://allabout.co.jp/internet/database/closeup/CU20071125A/snap8.jpg

この画面で、Nullって設定項目があるけど、
Nullとnot nullと、必ずどちらかを選ばないと
いけないのか?

「どちらにもしない」
っていうのはできないの?

332 :NAME IS NULL:2009/01/07(水) 22:11:23 ID:???
「SQLを解析する」
ってベンチマークなのか?

333 :NAME IS NULL:2009/01/07(水) 22:25:28 ID:???
NULLっていうのは、
「NULLも格納できる」
って意味?

NULLも格納できるし、
NULLじゃない、普通の値も格納できるし。
って理解でいい?

334 :NAME IS NULL:2009/01/07(水) 22:26:27 ID:???
not nullは、値としてnullを許さないという制約。
nullはその逆で、値としてnullも有り。
という意味ではないの?

335 :NAME IS NULL:2009/01/07(水) 22:40:01 ID:???
>>334
うんうん、そうだよねえ。
最近やっと意味がわかってきた。

336 :NAME IS NULL:2009/01/07(水) 23:31:16 ID:???
>>331をみてやっと>>324が何を言ってるのか理解した。
ってか、SQLite以前の話じゃないか。デフォルトがNULLってどのDBでも同じだ。

337 :NAME IS NULL:2009/01/07(水) 23:49:58 ID:???
わかってる人には想像つくけど、ヌルはnullかnot nullか?って確かになんか妙だな。

338 :NAME IS NULL:2009/01/08(木) 00:41:28 ID:???
そもそもnullの存在自体が・・・

339 :NAME IS NULL:2009/01/08(木) 03:28:07 ID:???
SQLitemanagerで選択とか挿入とかやって、
SQL文が自動生成されると楽しいね

自分で一生懸命考えて書かなくていいから。
ソースコード自動生成みたいで。

そんで、ちょこっと変更してSQL文実行してみると
さらに楽しさ倍増。

340 :NAME IS NULL:2009/01/08(木) 12:20:22 ID:???
http://uruseiyatsura.way-nifty.com/blog/2007/03/sqlitevacuumphp_e5ed.html

このページに

「phpをコンパイルする際、sqliteを組
み込んだバージョンとsqliteのCUIコマ
ンドツールのバージョンが一致してい
ないとまずい現象が発生します。」


と書いてあるのだが、これを一致させるには
どうしたらいいんだ?

341 :NAME IS NULL:2009/01/08(木) 15:34:23 ID:???
>>340
CUI と同じバージョンを組み込むようにコンパイルすればおk

342 :NAME IS NULL:2009/01/08(木) 17:44:15 ID:aeUdS6P9
SQLite使う人ってSQL自体怪しいでしょ。
DB使うの初めてとか。

343 :NAME IS NULL:2009/01/08(木) 18:06:32 ID:???
いろいろいるだろ。
普段RDBMS使ってる人が、手もとのプログラムの設定ファイルとかでもSQL使いたい場合とか。

344 :NAME IS NULL:2009/01/08(木) 19:24:27 ID:???
>>341
そもそもCUIのバージョンを確認するには
どうしたらいいんだろう?

MS-DOSプロンプトでsqlite3って打って、
出てきた数字がCUI版のバージョン番号と
いうことでいいのかな?

345 :NAME IS NULL:2009/01/08(木) 20:58:56 ID:???
>>344
pdo_sqliteが使っているSQLite3のバージョンは php --ri pdo_sqlite で、
CLIのsqlite3のバージョンは sqlite3 -version で調べられる。

でも、SQLiteは古いバージョンのバイナリが入手しづらいし
Windows環境で自前でコンパイルするのは面倒なので、
WEBアプリのDBをメンテしたいだけならsqlite3コマンドを使うより
以下のようなメンテ用のスクリプトを手動で実行した方が無難だと思う。

<?php
$db = new PDO('sqlite:///hoge.db');
$db->exec('VACUUM');
?>

サーバと同じバージョンのPHP(pdo_sqltie)を用意して
DOS窓で php.exe -f vacuum.php みたいな感じで。
あとバックアップも忘れずに。

346 :NAME IS NULL:2009/01/08(木) 21:36:43 ID:???
>>345
C:\xampp\php>php --ri pdo_sqlite
Extension 'pdo_sqlite' not present.

ってなります。
MS-DOSプロンプトからでなくて
phpinfoみたいので見れないですか?

347 :NAME IS NULL:2009/01/08(木) 21:39:33 ID:???
<?php
$a=sqlite_libversion();
print $a;
?>

これを実行すると、
2.8.17
と表示されるんだが、どういう意味なんだ?

348 :NAME IS NULL:2009/01/08(木) 21:53:38 ID:???
>>347
それはSQLite2のほう。
PHPの場合、sqliteエクステンションはSQLite2で、それとは別にsqlite3エクステンションがある。
さらにそれらとは別のPDO(pdo_sqlite)ではDSN接頭辞sqlite://がSQLite3でsqlite2://がSQLite2。
SQLite3(pdo_sqlite)を使いたいんなら、php.iniに extension=pdo_sqlite.dll を追加する。
XAMPPに入っているかどうかは知らないけど。

あなたのレベル的に、今はVACUUMとか気にせずにWebだけで使うのがいちばんな気がしないでもない。

349 :NAME IS NULL:2009/01/08(木) 22:00:53 ID:???
うわあああああああ
わかんないいいいい
漏れにはわかんないよおおおお

350 :NAME IS NULL:2009/01/08(木) 22:23:10 ID:???
(1)sqliteエクステンションはSQLite2
(2)sqlite3エクステンションもある

(3)sqlite://がSQLite3
(4)qlite2://がSQLite2

(5)SQLite3(pdo_sqlite)を使いたいんなら、php.iniに extension=pdo_sqlite.dll を追加する。

(3)と(4)は知ってた。自分で調べたから。

351 :NAME IS NULL:2009/01/08(木) 22:23:42 ID:???
<?php
$a=sqlite_libversion();
print $a;
?>


これを実行したときに、
数字が3にならなくていいのか?

352 :NAME IS NULL:2009/01/08(木) 22:31:39 ID:???
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll

この2行は入ってた。

でも
extension=pdo_sqlite.dll

これはなかった。
グーグルで検索してもあんまり
情報が出てこないから、あなたのタイプミス?
それとも、名前はよく似ているけど、違う機能なの?

353 :NAME IS NULL:2009/01/08(木) 23:08:01 ID:???
こいつ本当に失礼な物言いだなw

354 :NAME IS NULL:2009/01/08(木) 23:29:19 ID:???
>>353
警察に通報しました。
拳銃を持った男達がお前の自宅にお伺いします。

355 :NAME IS NULL:2009/01/08(木) 23:37:51 ID:???
>>348
猿に餌を与えないで><;

356 :NAME IS NULL:2009/01/08(木) 23:39:23 ID:???
>>355
警察に通報しました。

357 :NAME IS NULL:2009/01/08(木) 23:42:50 ID:???
http://ja.wikipedia.org/wiki/SQLite
ここのページに

「基本的にPHP5をインストールするときに、
configureオプション(--with-sqliteなど)とし
てSQLiteも同時に組み込んで利用できるよ
うになる。Apache friendsのXAMPPにもPHP
5が含まれているが、デフォルトで利用でき
る。XAMPPにインストールされるSQLiteは、
2008年1月現在バージョン2.8.17となっている
。」

と書いてあるが、インストールされるときに、
2.8.17
と固定されてしまったバージョンを
3系に変えるには、どうしたらいいの?

358 :NAME IS NULL:2009/01/09(金) 00:07:19 ID:???
もし3系に変更しないで、現状のまま、2.8.17のまま
使うとしたら、何か問題が起こる?

例えば、PDO+sqlite3で使いたいんだけど、
その時に何か問題が起こるか?

ていうか、そもそも使えるのか?

PHPに組みこまれたsqliteが2.8.17なら、
PDOからsqlite3を使うのは無理なのではないのか?

それとも、パスが通ったところに、sqlite3のexeを
置いておけば、勝手に接続するのか?

359 :NAME IS NULL:2009/01/09(金) 00:57:23 ID:???
>>358
やったことないので、実際どうなるかどうかはわからんけど、
・sqlite2とsqlite3は、APIもデータフォーマットも異なるらしいので、プログラム的には別のもの、と考えた方がよさそう。
・sqlite3の実行ファイルは単にsqlite3のライブラリをリンクしたフロントエンド。
・「組み込まれた」ということはつまりsqlite2/3のライブラリをリンクしてるということなので、sqlite3の実行ファイルは無関係。

360 :NAME IS NULL:2009/01/09(金) 01:09:01 ID:???
<?php
$a=sqlite_libversion();
print $a;
?>

これを実行したときに、2と出るということは、
PHPとsqlite2系がリンクされているということだよね。

にもかかわらず、PDOでsqliteって書けば
自動的に3系が呼び出されて使われるの?

つまり、PHPの内部でリンクされているsqliteを
2から3に変更しなくてもいいってことなの?

361 :NAME IS NULL:2009/01/09(金) 05:05:44 ID:???
こいついつからいるの?

362 :NAME IS NULL:2009/01/09(金) 14:42:33 ID:???
>>361
警察に通報した。

363 :NAME IS NULL:2009/01/09(金) 15:00:01 ID:???
PDO + SQLite3でしか動かないサンプル書いて。
5行くらいで。

で、もしそのコードが動いたら、
自分のパソコンではSQLite3が動くって
確認できるでしょ。

364 :NAME IS NULL:2009/01/09(金) 20:52:29 ID:???
sqlitemanagerで、
パスの情報を入力するときには
バックスラッシュで入れるんだ。

ところが、いったん認識されて、
管理画面でみると、ノーマルスラッシュに変換
されて表示されている。ふしぎ!

365 :NAME IS NULL:2009/01/09(金) 23:41:17 ID:???
http://www.phpbook.jp/database/sqlite/index1.html

ここみたら2つとも入れないとダメなんじゃん。
だったら、そう言ってくれなきゃ。

366 :NAME IS NULL:2009/01/10(土) 00:00:29 ID:???
ここまで来るともう笑いがこみ上げてくる

367 :NAME IS NULL:2009/01/10(土) 00:42:05 ID:???
>>366
警察に通報しました。

368 :NAME IS NULL:2009/01/10(土) 00:52:46 ID:???
なんなのこの子?小学生?

369 :NAME IS NULL:2009/01/10(土) 00:59:50 ID:???
>>368
警察に通報しました。

370 :NAME IS NULL:2009/01/10(土) 01:21:55 ID:???
>>365
君は Windows 環境か。なら dll なんて使わんからそんなこと知らんわ。
しかも話題が PHP じゃないか。すれ違いだろ。恥ずかし。

371 :NAME IS NULL:2009/01/10(土) 01:23:21 ID:???
>>370
Linuxってdllって無いの?

372 :NAME IS NULL:2009/01/10(土) 01:43:50 ID:???
この基地外のスレ違いはとどまる所を知らないな
もう相手すんなよ、半端に答えた馬鹿共

373 :NAME IS NULL:2009/01/10(土) 01:53:48 ID:???
>>372
警察に通報しました。

374 :NAME IS NULL:2009/01/10(土) 03:03:38 ID:???
スルーするー

375 :NAME IS NULL:2009/01/10(土) 14:53:52 ID:???
>>374
警察に通報しました。

376 :NAME IS NULL:2009/01/10(土) 16:49:36 ID:???
pdo.so ってLinux環境でだけ
入れる必要がある?

377 :NAME IS NULL:2009/01/10(土) 17:23:35 ID:???
>>376
警察に通報しました。

378 :NAME IS NULL:2009/01/10(土) 17:57:37 ID:???
>>377
警察に通報しました。

379 :NAME IS NULL:2009/01/10(土) 20:52:24 ID:???
このスレって池沼しかいないの?

380 :NAME IS NULL:2009/01/10(土) 21:02:33 ID:???
>>379
警察に通報しました。

381 :NAME IS NULL:2009/01/10(土) 21:09:45 ID:???
透明あぼーんでスッキリ

382 :NAME IS NULL:2009/01/10(土) 21:14:43 ID:???
#include <sqlite3.h>

{
  sqlite3 *db;
  sqlite3_open("anatawa_daare", &db);
  return wakaran;
}


383 :NAME IS NULL:2009/01/10(土) 21:18:16 ID:???
>>382
警察に通報しました。

384 :NAME IS NULL:2009/01/10(土) 22:00:11 ID:???
>>381
警察に通報しました。

385 :NAME IS NULL:2009/01/10(土) 22:00:44 ID:???
>>382
これってC?

386 :NAME IS NULL:2009/01/10(土) 23:25:00 ID:???
C以外の何に見えるんだ

387 :NAME IS NULL:2009/01/10(土) 23:58:11 ID:???
Cのようなもの

388 :NAME IS NULL:2009/01/11(日) 01:32:44 ID:???
コンパイルが通りませんでした!

389 :NAME IS NULL:2009/01/11(日) 04:10:54 ID:???
おいらもCは触ったことがないのでわからんや
つかすごい荒れようですね
敵同士だけども…認め合ってお互いを高めあうライバルのような、そんなスレだと思って開いたが残念だ。

390 :NAME IS NULL:2009/01/11(日) 05:22:02 ID:???
荒れてない荒れてない

?をあぼーんするだけで静かなもんだ

391 :NAME IS NULL:2009/01/11(日) 09:56:17 ID:???
>>390
警察に通報しました。


392 :NAME IS NULL:2009/01/11(日) 12:05:00 ID:???
>>388
*unix 系で Darwin + Xcode なら標準で、Linux 系なら管理メニューから sqlite3 関連インストールすればいけるよ。
C/C++ どちらも Ok.

sqlite3_exec("select * from tbl;", ...);

こんな感じで手軽に C/C++ から sqlite3 が扱えます。

393 :NAME IS NULL:2009/01/11(日) 13:02:40 ID:???
ボケにマジレスされても

394 :NAME IS NULL:2009/01/11(日) 13:04:03 ID:???
>>393
どうして、そんなに病んでるの?

395 :NAME IS NULL:2009/01/11(日) 13:09:51 ID:???
sqlite使うと精神がやむのかもね。
COBOLみたいに!

396 :NAME IS NULL:2009/01/11(日) 13:47:11 ID:???
出来心でやったボケにそんなマジレスされる方が辛いと思うけどなw

397 :NAME IS NULL:2009/01/11(日) 17:21:19 ID:???
>>395
そうなのか。で、COBOL(遠い目)って現役?
だけど sqlite は sql 始めるのにいいよね。

>>396
レベル上げたレスしてくれたらいいじゃないかい。期待してます。って、目的持ってない人にはどうしようもないか。。

398 :NAME IS NULL:2009/01/11(日) 18:52:14 ID:???
>>397
よくめんどい奴だって言われるだろw

399 :NAME IS NULL:2009/01/11(日) 19:52:19 ID:???
(1)MySQLはユーザーという概念があるのがめんどくさい
(2)MySQLはInnoDBとかデーターベースの種類を選択しなければならないのがめんどくさい
(3)MySQLは変数の型を指定しなければならないのがめんどくさい
(4)MySQLはサーバー名(localhostとか)を指定しなければならないのがめんどくさい
(5)MySQLは無料のレンタルサーバーにPDOのドライバが入っていないのがめんどくさい

400 :NAME IS NULL:2009/01/11(日) 19:52:52 ID:???
SQLite って、オートインクリメントって、
できないの?

401 :NAME IS NULL:2009/01/11(日) 20:08:16 ID:???
>>400
なんで検索しないの?馬鹿なの?死ぬの?

402 :NAME IS NULL:2009/01/11(日) 20:14:36 ID:???
>>401
だってオートインクリメントを設定する項目がないんだよ

403 :NAME IS NULL:2009/01/11(日) 20:46:36 ID:???
設定する項目・・・

404 :NAME IS NULL:2009/01/11(日) 21:26:38 ID:???
それはオートバックス

405 :NAME IS NULL:2009/01/11(日) 21:30:35 ID:???
だーかーらー
相手しないように。

406 :NAME IS NULL:2009/01/11(日) 21:52:34 ID:???
一言「出来る」でいいだろ。ホントに知らないんだったら SQLite の前に SQL その物を知らない超初心者なんだからさ。

>>399
それは MySQL に限らないと思うんだがなぁ。

407 :NAME IS NULL:2009/01/12(月) 02:17:06 ID:???
死んじゃらめぇ

408 :NAME IS NULL:2009/01/12(月) 05:07:13 ID:???
大して知識もないのにえらそうにしたいだけの奴が最近多すぎるな。


409 :NAME IS NULL:2009/01/12(月) 05:14:50 ID:???
知識絶無の奴からはそう見えるのか。

410 :NAME IS NULL:2009/01/12(月) 05:14:54 ID:???
ぬるぽ

411 :NAME IS NULL:2009/01/12(月) 22:15:45 ID:???
んがんぐ

412 :NAME IS NULL:2009/01/13(火) 19:06:08 ID:???
http://d.hatena.ne.jp/dayflower/20060516/1147777685

SQLite では,フィールドを INTEGER PRIMARY KEY
にして INSERT の際にそのフィールドに値を与えない
と同じような挙動になります。

やっぱりオートインクリメントないんじゃん。

413 :NAME IS NULL:2009/01/13(火) 19:08:04 ID:???
http://d.hatena.ne.jp/masuP/20060622/1151014044

「先日悩んでいた、SQLiteのPRIMARY KEYの自動採番(オートインクリメント)が出来ない件は、

どうやらCREATE TABLEの時に、id INTEGER PRIAMRY KEY,…のINTEGERの記述が抜けていたようです。

なんでかっていうと、SQLiteはデータ型を決めなくてもよいので、

めんどくさがりの僕は記述してなかったんですね。
-----------------------------------------------------------
↑これってどういう意味だ?

414 :NAME IS NULL:2009/01/13(火) 19:09:42 ID:???
http://blog.kumacchi.com/2008/04/sqliteinsert.html

「SQLiteで自動でインクリメントするカラムを定義するには

「カラム名 INTEGER PRIMARY KEY」

という風にしてCREATE TABLEします。下が例に
なります。下の例ではカラム名IDXという名前のオ
ートインクリメントされるカラムを定義しています。下
のサンプルで作成されたテーブルにINSERTすると
IDXは自動でインクリメントされていきます。インサー
トするたびに1,2,3・・・と勝手にインクリメントされ
るわけです。」

このやり方でいいのか?

415 :NAME IS NULL:2009/01/13(火) 19:38:37 ID:???
SQLiteManager坊や乙

416 :NAME IS NULL:2009/01/13(火) 19:45:14 ID:6eOf4Dgo
>>414
正確な定義としては間違っているが、一般的な用法としておそらくそれでいいと
答えていいような気がする。
スキーマを見せて頂ければもう少し具体的に述べることができるかもしれない。

417 :NAME IS NULL:2009/01/13(火) 20:32:17 ID:???
>>415
警察に通報しました。

418 :NAME IS NULL:2009/01/13(火) 21:43:14 ID:???
>>413
君の頭の構造(程度)がわからない。
auto incrimental は出来るだろ?

Primary Key は重複するコードを持たない。その副産物が auto incrimental な挙動として現れる。

それはそうと SQLite3 入門でも買ったらどう?
ここ何日も悩んでる?内容はそこにあるよ。

それと >>417 のように直ぐ切れない。カッカするのはカルシュウム不足かい。

419 :NAME IS NULL:2009/01/13(火) 21:44:47 ID:???
>>418
オートインクリメントはできるけど
そのやり方が隠しコマンドなんだよ!

420 :NAME IS NULL:2009/01/13(火) 21:48:57 ID:???
>>418
それにいってることもおかしい。
1の次に1を入れようとしたら、
「重複できないから、自動的に2になる???」
そんなわけがない。

Null許容だったら自動的にNULLになるし、
Null不可だったらエラーになる。
「重複できないから」
という理由で自動的に数字がインクリメントされるということはない。
実際に試してみると良い。

これだから理論物理学者は困る。

421 :NAME IS NULL:2009/01/13(火) 21:51:51 ID:???
>>418
自分の頭の程度は、偏差値65.
上位15%くらい。覚えておけ。

422 :NAME IS NULL:2009/01/13(火) 23:41:16 ID:???
>>419
か、隠しコマンドぉ? これは command では無いのだがなぁ・・・

>>420
論理物理学者?・・・・なんじゃそれ。
だ〜か〜らぁ  SQLite3 入門から読みなされ。
SQLite3 がそのように説明してある。実験的に見いだした結論ではない。君の頭は大丈夫かい。どうでもいいけど、なんか恥ずかしいぞ、おまえ。

そもそも、auto incremantal その物を実装したいのかい?
君が DB の勉強をしていく中で、今の悩みはなんだったんだろうと気がつくだろう。そんな程度のものだ。
途中で delete したらそこから renumber でもし直すのかい?

>>421
へ、偏差値65ぉ?
おいおい、君のは変態値の間違いだろ。不覚にもお腹がよじれるほど笑ってしまったぞっ!

423 :NAME IS NULL:2009/01/14(水) 00:00:46 ID:???
http://cl.pocari.org/2006-02-12-1.html

結局これが一番わかりやすい

「PHP のマニュアルの sqlite_last_insert_rowid の項目を見ていたら

Tip: You can create auto-increment fields in SQLite by declaring them as INTEGER PRIMARY KEY in your table schema.

つまり,SQLite で auto-increment なフィールドを作りたければ,

INTEGER PRIMARY KEY

を指定してあげればいいらしい.」

424 :NAME IS NULL:2009/01/14(水) 00:01:20 ID:???
MySQLの場合は、
「オートインクリメント」って項目があって、
それをポチってすればオートインクリメントになるんだよ!

425 :NAME IS NULL:2009/01/14(水) 00:05:54 ID:???
MySQLって馬鹿しか触らないの?

426 :NAME IS NULL:2009/01/14(水) 00:51:38 ID:???
あるテーブルのデータを数値型のカラムの昇順に並べているのですが、
上位100件以下のデータを削除する、というクエリはありますでしょうか?

427 :NAME IS NULL:2009/01/14(水) 01:13:34 ID:???
>>426
1番から100番だけ残して、
101以降をデーターベースから削除したいってこと?

428 :NAME IS NULL:2009/01/14(水) 01:16:40 ID:???
>>426
ROWID

429 :NAME IS NULL:2009/01/14(水) 01:16:48 ID:???
delete from tbl t1 where (select count(*) from tbl t2 where t1.col < t2.col) > 100;

430 :NAME IS NULL:2009/01/14(水) 01:29:39 ID:???
>>427
はい。101番以降を削除したい次第です。

>>428
ROWIDはSELECT結果ごとに変わるのですか?
ちょっと試してみます。

>>429
ぬぉ…
試してみます。。。
tblの後のt1とt2はAS t1/t2と同義でしょうか?

431 :NAME IS NULL:2009/01/14(水) 01:41:43 ID:???
自分だったら頭が悪いから一気にやろうとしないで

(1)データーを全部新規テーブルAにコピーする
(2)数値でソートする
(3)1−100までだけを新規テーブルBにコピーする
(4)Aを削除
(5)Bのデーターを表示

ってやるけど。それを1行でできると?

432 :NAME IS NULL:2009/01/14(水) 02:12:32 ID:???
>>430
>>431
お前ら自己結合すらやった事ないのか

433 :NAME IS NULL:2009/01/14(水) 02:18:36 ID:???
>>430
SQLiteに限らずASを省略できる処理系は他にもあったような気がします。
新規テーブルでいいなら
create newtbl as select * from oldtbl order by col limit 100;
が圧倒的に楽

434 :NAME IS NULL:2009/01/14(水) 02:23:30 ID:???
http://www.sqlite.org/autoinc.html

しつこくオートインクリメント。
英語なのでちょっと読むの難しい。
大半はわかるけど。

以下、わからない単語
monotonically

435 :NAME IS NULL:2009/01/14(水) 02:24:22 ID:???
SQLiteの場合、ROWIDってのは
何もしなくても勝手に作成されるものなのか?

436 :NAME IS NULL:2009/01/14(水) 02:34:06 ID:???
主キーが1カラムなら>>429よか
delete from tbl where pk not in (select pk from tbl order by col limit 100);
の方が良いな。

437 :NAME IS NULL:2009/01/14(水) 02:58:57 ID:???
integer型とint型と違うってどういうこと?
トラップなの?
トラップの解除に失敗すると毒針とか出てくるの?

438 :NAME IS NULL:2009/01/14(水) 08:18:53 ID:???
違うよ

439 :NAME IS NULL:2009/01/14(水) 08:45:49 ID:VPcjltWY
>>437
SQLite3においてINT型はINTERN型と同等でありINTFLOAT型とも同等です。
ただし、INTEGER型とINT及び同等の型の間には文脈によって異なる解釈が
与えられる場合があります。
常にすべてを同等と見なしたい場合、INTEGERの使用を推奨します。
fusianasanして頂ければもう少し詳しく説明できるかもしれません。

440 :NAME IS NULL:2009/01/14(水) 10:28:11 ID:???
*おおっと*

441 :NAME IS NULL:2009/01/14(水) 18:00:32 ID:???
DESCコマンドってないの?

442 :NAME IS NULL:2009/01/14(水) 18:19:26 ID:???
DESCってORDER BY のDESC?
使えるよ。

443 :NAME IS NULL:2009/01/14(水) 18:20:18 ID:???
ってOracleのDESC?
同等なのはあるだろ

444 :NAME IS NULL:2009/01/14(水) 22:43:07 ID:???
俺みたいに経験豊富だと、DescとコマンドからDesc(ribe)の方を連想するがな


445 :NAME IS NULL:2009/01/15(木) 11:42:19 ID:???
ここは情報スレ?質問スレ?雑談スレ?

446 :NAME IS NULL:2009/01/15(木) 12:04:22 ID:???
失礼

>>443
>>444
の言うDESCです

447 :NAME IS NULL:2009/01/16(金) 12:46:47 ID:???
InsertとかUpdateのプリペアってずっと保持して使いまわしても問題ないんですかね?


448 :NAME IS NULL:2009/01/16(金) 15:15:43 ID:???
ずっとっていうと?

449 :NAME IS NULL:2009/01/16(金) 17:12:17 ID:ef3YrRBw
>>447
明示的に削除するまで有効です。
DBを閉じる前に削除する必要があります。

450 :NAME IS NULL:2009/01/16(金) 20:26:13 ID:???
integer (int) 整数型
float 浮動小数点型

intloat型って・・・あるとしたら凄いなぁ。

451 :NAME IS NULL:2009/01/16(金) 21:19:08 ID:???
SQLiteのint型と
integer型は、
明確に違うものですよね?

452 :NAME IS NULL:2009/01/16(金) 23:19:19 ID:???
>>451
根拠ぷりーず・・・全くもって意味不明なんですけど。

453 :NAME IS NULL:2009/01/17(土) 03:09:34 ID:???
integerのときはオートインクリメントになるけど、
それと同じ動作を期待してintにしても、
オートインクリメントにはならない!

454 :NAME IS NULL:2009/01/17(土) 03:51:39 ID:Eb0rf+3b
>>450
intloat型はあります。
特別目を引いた面白い型はINTEL型です。
これは数値型だそうです。

>>451
内部的に同じものです。
文脈によって評価が変わります。
構文解析機を作る根性が足りなかったとも言えます。
逆に根性出してもらって複雑にされるのも困りますね。
このくらいの状態が一番いいバランスだと思います。

455 :NAME IS NULL:2009/01/17(土) 13:05:28 ID:???
>>454
変に追いコンだのかもしれない。型は私たちの都合のいい解釈をするもの。
誤解を恐れず言えば、SQlite に型はない。Integer 型に文字を入れることも可能。
  create table tbl (i1 integer,t1 text);
  insert into tbl values('seisu', 'moji');

>>451
int型とinteger型が違うと執着するのは、型が厳密な言語をこれまで使ってきた人?ということ。
c/c++でいえば short int, int(曖昧), long int のように整数型であっても扱える範囲が変わる。そういう世界から見ると SQlite の有るようで無い曖昧な型は気持ち悪いのかもしれない。


456 :NAME IS NULL:2009/01/17(土) 13:19:32 ID:???
変数に型が付いてる言語と、保持するデータの方に型が付いてる言語の違いみたいなもんでしょ。
で、SQLiteのスキーマの型は普通のSQLとの字面上の互換性のためにありますよ、と。

457 :NAME IS NULL:2009/01/17(土) 14:55:02 ID:???
ガッテンボタンを連打したい気分

458 :NAME IS NULL:2009/01/17(土) 22:53:52 ID:Eb0rf+3b
>>455
不思議なことをいう人ですね。
SQLite3以降は型がありますよ。

459 :NAME IS NULL:2009/01/17(土) 22:59:24 ID:Eb0rf+3b
>>456
むしろ逆です。
SQLiteとの互換性のために自動的な型変換が必要になっています。

460 :NAME IS NULL:2009/01/18(日) 00:31:22 ID:???
>>458
不思議な事をいって申し訳ないねぇ
君がいう「型があるよ」レベルの話はなぁ。私が言わんとしたことが君に理解できていないと見た。

>>459
sqlite(3以前?)の為に必要になっているだって!?。本当かよ。
あまり突っ込んで追いつめたくは無いが、自動型変換というからにはそれぞれの型にスタイルがあって相互に変換されるという事を言ってるんだよね?、・・・だよね?
多くを挙げなくていいからさ。一例で説明できるものある?(こんなことすると荒れちゃうかな?)

461 :NAME IS NULL:2009/01/18(日) 00:52:41 ID:P8JelzjM
>>460
fusianasanして頂ければもう少し詳しく説明できると思います。

462 :NAME IS NULL:2009/01/18(日) 01:24:43 ID:???
>>461
おいおい、勘弁してくれよ。fusianasan に誘うとは。
そうか、君はツリちゃんだったのか。

463 :NAME IS NULL:2009/01/18(日) 01:29:12 ID:P8JelzjM
>>462
釣りではありません。
ここから先は対価が必要ということです。

おそらくあなたは自分の知識が正しいと信じていることでしょう。
そして無知を諭してくれる人もいないでしょう。
無知を諭す役を私がやって差し上げようと。
そしてそれに対価を求めたのです。
私はあなたのママではないのですから。

464 :NAME IS NULL:2009/01/18(日) 01:42:47 ID:???
ママァ〜〜

465 :NAME IS NULL:2009/01/18(日) 02:29:04 ID:???
胸毛生えてるけど、ママって呼んでもらって嬉しいワ。

466 :NAME IS NULL:2009/01/18(日) 02:55:22 ID:???
http://fg-180.katamayu.net/archives/2007/10/27/234557

ここでなんか文句言ってる人がいるけど、
これってファイルロックかけてないから?

467 :NAME IS NULL:2009/01/18(日) 03:04:19 ID:???
http://bsdsystem.blog40.fc2.com/blog-entry-5.html

「sum()などの関数を使うと自動型変換で型識別に失敗して落ちる」

↑これってマジ?

468 :NAME IS NULL:2009/01/18(日) 03:06:06 ID:???
sqliteって

--

↑これでコメントできなくない?
エラーになるんだけど。

469 :NAME IS NULL:2009/01/18(日) 09:46:20 ID:???
>>463
処で SQLite3 をどういう環境で使ってる?
君ってどうも生では使ってそうにないねぇ。Ruby?, Rails?
だとしから、かなり話はかみ合わないわ。

470 :NAME IS NULL:2009/01/18(日) 13:08:47 ID:???
--;)

471 :NAME IS NULL:2009/01/18(日) 18:04:28 ID:???
糞スレになったな

472 :NAME IS NULL:2009/01/18(日) 20:24:39 ID:???
>>470
ああ、最後にセミコロンが必要なんだっけ?
でもパーレンは必要ないでしょう?

だから、

--;

だけで、動きますよね?

473 :NAME IS NULL:2009/01/18(日) 20:46:27 ID:???
>>472
--だけで動いてるよ。

474 :NAME IS NULL:2009/01/18(日) 22:20:27 ID:???
乾いた心にはバーレンも必要

475 :NAME IS NULL:2009/01/18(日) 22:44:33 ID:???
>>473
でもこっちの環境ではエラーになるんだけど?

476 :NAME IS NULL:2009/01/18(日) 22:55:33 ID:???
エラーメッセージくらい出せよ。

477 :NAME IS NULL:2009/01/18(日) 23:52:03 ID:???
>>476
それくらい推測しろぼけ

478 :NAME IS NULL:2009/01/19(月) 00:12:16 ID:???
>>477
今度それ客に言ってみるわ

479 :NAME IS NULL:2009/01/19(月) 01:02:29 ID:???
>>478
そりゃ客が言う台詞だろ
客に言って成り立つかぼけ

480 :NAME IS NULL:2009/01/19(月) 02:36:34 ID:???
はぁ………。

481 :NAME IS NULL:2009/01/22(木) 20:23:04 ID:???
台風一過、この静けさがSQLiteスレには相応しい。

482 :NAME IS NULL:2009/01/22(木) 22:04:51 ID:???
モナーモナー

483 :NAME IS NULL:2009/01/22(木) 22:18:44 ID:???
もっとこう…
SQLiteを使った面白いアプリとかないの?

484 :NAME IS NULL:2009/01/22(木) 23:05:24 ID:???
>>483
つFirefox

485 :NAME IS NULL:2009/01/22(木) 23:11:04 ID:???
面白いかどうかは置いといてh2k6(メディアプレーヤ)は便利。

486 :NAME IS NULL:2009/01/23(金) 19:45:02 ID:???
>>483
カタロム

487 :NAME IS NULL:2009/01/26(月) 11:27:25 ID:???
http://dontstopmusic.no-ip.org/diary/20080111.html#p01

これってどうやって設定するの?

488 :NAME IS NULL:2009/01/26(月) 14:48:39 ID:???
Database#busy_timeout

489 :NAME IS NULL:2009/01/27(火) 06:53:01 ID:???
database is lockedの問題についてどう対処すればいいの?

デフォルトでは0秒しか待たない、つまり
トランザクションを確保しようとして、ロックを取りにいったところ、
もし先客がいたら、0秒でdatabase is lockedになってしまう。

それなので、timeoutを5秒とかに設定するんだけど、
それってデーターベースそのものの設定で、そういう風に設定
できるの?できないの?

もしできないとしたら、一回ごとに、timeoutの設定文を
すべてのソースコードに書かないといけないの?

それで、database is lockedになったときの処理は
try catch文でエラーを補足して、自分で処理を書かないといけないの?

490 :NAME IS NULL:2009/01/27(火) 08:06:10 ID:DP9yL1U9
毎回設定して毎回処理かけや

491 :NAME IS NULL:2009/01/27(火) 09:51:35 ID:???
こんなに半泣きでヒスってるみたいな質問文も
久しぶりに見る。

492 :NAME IS NULL:2009/01/27(火) 12:25:33 ID:???
SQLiteはDBMSというよりSQLで検索できるストレージみたいなものだから、
排他処理だなんだと複雑なことやりたければ、自分で処理を書く。

それが嫌ならMySQLとかのdaemonが動いているDBMSを使う。

493 :NAME IS NULL:2009/01/27(火) 16:47:25 ID:???
質問です。
現在JavaでSQLiteDBを利用しています。
その中で、1つのSQL内で二つのDB(それぞれA、Bとします)を参照することになりました。
以下概略です。

Class.forName(org.sqlite.JDBC);
Connection conn=DriverManager.getConnection(jdbc:SQLite:[DB Aの場所]);
String sql="select A.hoge B.hage from [A内のテーブル] A
left outer join [B内のテーブル] B
where 条件";

これで
java.sql.SQLException: near "B": syntax error
というエラーが出ました。
恐らくBを参照できないことによるエラーだと思われるのですが、どこをどのように直すべきでしょうか?

494 :NAME IS NULL:2009/01/28(水) 00:26:54 ID:???
>>492
参考になるページ知ったら教えて。

495 :NAME IS NULL:2009/01/28(水) 00:59:23 ID:???
attach database 'DB B の場所' as B;


496 :NAME IS NULL:2009/01/28(水) 04:55:23 ID:7HXPt6Ry
楽観ロックでいいよ

497 :NAME IS NULL:2009/01/29(木) 14:44:10 ID:???
C#でSystem.Data.SQLiteを使う(LINQで)良いサンプルがどこかにありませんか?
あれば紹介してください。英語でも良いです。

498 :NAME IS NULL:2009/01/30(金) 01:47:45 ID:???
>>497
総本山のフォーラムより

testlinqってプロジェクトファイルが、ソースコードと一緒についてくるから、それ使ったらどう?

だって。

ttp://sqlite.phxsoftware.com/forums/p/1264/5375.aspx#5375


499 :NAME IS NULL:2009/01/30(金) 17:11:10 ID:???
Documentation の SQL Syntax が、以前は BNF だったのに、
今見たら状態遷移図になっててびびった。
以前の BNF のに戻してくれー!

500 :NAME IS NULL:2009/01/30(金) 17:22:26 ID:???
こっちの方がいいじゃん
BNFのパースを頭でやる時代は終わったんだよ

501 :NAME IS NULL:2009/01/30(金) 17:26:28 ID:???
キレイだけどBNFの方が便利だな

502 :NAME IS NULL:2009/01/31(土) 01:05:52 ID:???
json.org思いだした

503 :NAME IS NULL:2009/01/31(土) 09:54:08 ID:???
>>498
ありがとう。
そのフォーラムには自分もたどり着きました。
それ以前にEntity Frameworkのインストールに手間取ってましたが、
ようやく環境が整ったのでじっくり読んでみます。
LINQおもしろいね。

504 :NAME IS NULL:2009/02/11(水) 18:11:41 ID:fk2Zdes0
・DBMS名とバージョン:
SQLite3

・テーブルデータ
【マスタテーブル】(idが主キー)
id name kana publication  # Catalog // 同人誌マスタ
---------------------------  # publicationはEvent(id)を参照
01 AAAA aaaa 02
02 BBBB bbbb 02

id circle kana ext comment  # Circle // サークルマスタ
------------------------------  # UNIQUE(circle,ext)
01 ・・・・・・ ・・・・ ・・・ ・・・・
02 ・・・・・・ ・・・・ ・・・ ・・・・

id title  # Title // 原作マスタ
---------  # UNIQUE(title)
01 ・・・・・
02 ・・・・・

id attribute  # Attribute // 属性マスタ
-------------  # UNIQUE(attribute)
01 ・・・・・
02 ・・・・・

id event year month day place host  # Event // イベントマスタ
----------------------------------------  # UNIQUE(event,year,month,day)
01 ・・・・・ ・・・・ ・・・・・ ・・・ ・・・・・ ・・・・
02 ・・・・・ ・・・・ ・・・・・ ・・・ ・・・・・ ・・・・

【1:N関係テーブル】
id author kana  # Author // 作家リレーション
----------------  # UNIQUE(id,author),idはCatalog(id)を参照
01 ・・・・・ ・・・・
02 ・・・・・ ・・・・
02 ・・・・・ ・・・・

【N:N関係テーブル】
id cid  # Publisher // サークルリレーション
-------  # UNIQUE(id,cid),idはCatalog(id)を参照,cidはCircle(id)を参照
01 01
02 01

id tid  # Original // 原作リレーション
-------  # UNIQUE(id,tid),idはCatalog(id)を参照,tidはTitle(id)を参照
01 01
01 02
02 02

id aid  # Property // 属性リレーション
-------  # UNIQUE(id,aid),idはCatalog(id)を参照,aidはAttribute(id)を参照
02 01
02 02

(本文が長すぎます&改行が多すぎますと怒られたので一旦区切ります)

505 :NAME IS NULL:2009/02/11(水) 18:12:12 ID:???
誤爆しましたorz

506 :NAME IS NULL:2009/02/11(水) 18:42:46 ID:???
同人誌スマタと読み間違えた

507 :NAME IS NULL:2009/02/11(水) 20:27:03 ID:???
SQLiteってトランザクションを発行すると、
自動的にデーターベース全体がロックされるの?

508 :NAME IS NULL:2009/02/11(水) 21:29:44 ID:???
SQLiteManagerのバグかな?
IEだと動くけど、firefoxだと動かない機能あるよね?

509 :NAME IS NULL:2009/02/12(木) 03:18:28 ID:???
執念深く、だが何も学ばない馬鹿だな

510 :NAME IS NULL:2009/02/12(木) 03:25:59 ID:???
回答できないのなら、無理に書き込まなくても良い。

511 :NAME IS NULL:2009/02/12(木) 04:28:39 ID:???
執念深く、だが何も学ばない馬鹿だな

512 :NAME IS NULL:2009/02/12(木) 14:41:44 ID:???
>>511
こいつマジで入院させたほうがいいだろwww

513 :NAME IS NULL:2009/02/12(木) 17:09:16 ID:???
執念深く、だが何も学ばない馬鹿だな

514 :NAME IS NULL:2009/02/12(木) 17:11:54 ID:???
似たもの同士にしか見えないw

515 :NAME IS NULL:2009/02/12(木) 21:43:11 ID:???
SQLiteをやると精神を病む

516 :NAME IS NULL:2009/02/12(木) 22:30:07 ID:???
SQLiteにODBC driver経由で接続したいのですが、自分のXPは64bit版だったりします。
64bit版のODBC driverの所在をご存じの方は教えてください。

517 :NAME IS NULL:2009/02/12(木) 23:30:24 ID:???
ODBC driverってPDOみたいなの?

518 :NAME IS NULL:2009/02/13(金) 00:25:42 ID:???
>>516
32bit版のドライバ使えると思うよ
c:\windows\syswow64\odbcad32.exeとか無いかね?

519 :NAME IS NULL:2009/02/13(金) 06:40:42 ID:CR/0GMDj
>>507
ロックはファイル全体に対してかかります。
ただし、読み込み中に読み込みが出来ないというようなことはありません。
また、SQLiteはデータベースファイルのセマンティクスが他とは違います。
ファイル全体がロックの対象になることによるパフォーマンスの低下は
ほとんどありません。
ご安心ください。

520 :NAME IS NULL:2009/02/13(金) 07:17:40 ID:???
超えた!!!

521 :NAME IS NULL:2009/02/14(土) 12:35:13 ID:???
>データベースファイルのセマンティクス

これってなんだろう??

522 :NAME IS NULL:2009/02/15(日) 18:30:00 ID:pRsX6A8k
更新のあったレコード全部削除してinsertし直すが、削除せずupdateするより5倍程早かった><

PHPです
どっかおかしいのかな…

523 :NAME IS NULL:2009/02/17(火) 00:23:32 ID:???
なぜUpdateの方が早いと考えるのかがさっぱり分からない

524 :522:2009/02/17(火) 00:41:15 ID:???
>>523
updateの方がディスクのアクセスが少なく、早いのかなと…。
今まで、sqlでも小規模なデータしか扱ったことが無かったので、良く理解できて無かったみたいです。

読み込む時でも、複雑なsql文で絞ったりするより、単純なsql文を投げて大きく取った方が、結果的に早いみたいですね。
散々チューニングして遅くしてましたorz

525 :NAME IS NULL:2009/02/17(火) 03:16:02 ID:dbh1k8JS
>>524
たしかにUPDATEのほうが速くていいはずなんですよね。
参考までに、どの程度の規模のデータベースで何をしようとしたのか教えて
頂けませんか?
あなたの得になることは何もないので申し訳ないのですが。

526 :524:2009/02/17(火) 04:35:02 ID:???
>>525
データを残してなくて正確なことはアレなのですが、

カラム数5のテーブルt、レコード総数はその時点で5000件ぐらいだったと思います。
その内カラムc1がxであるレコードが500程。

方法1
BEGIN
DELETE FROM t WHERE c1 = 'x'
INSERT … を500回くらい
COMMIT

方法2
BEGIN
UPDATE … 何回か(500くらい)
DELETE … 何回か(50くらい)
COMMIT
※UPDATEとDELETEの順番はランダム。入れ替わり立ち替わり。
※UPDATEもDELETEもWHERE句はANDのペア一個。ペアの片方は c1 = 'x'
※UPDATEの更新内容はINTEGERのカラムを2つ。


各数値はうろ覚えです…

この状態で計測した所、方法2が方法1の5倍くらいの時間でした。

どなたか確認していただけると助かります。

527 :526:2009/02/17(火) 04:40:41 ID:???
大事なことを忘れてた…
sqlite2.1
php5です。

528 :NAME IS NULL:2009/02/17(火) 06:04:13 ID:???
>>526
チューニングはその1万倍くらいの規模になってから考えればいいよ
正直、やるだけ無駄

529 :NAME IS NULL:2009/02/17(火) 06:06:42 ID:dbh1k8JS
もしかしてSQLiteは関係なくてSQLの組み立てで時間が変わっている
なんてことはありませんか?

530 :526:2009/02/17(火) 07:09:10 ID:???
>>528
約1分に一回くらいこの処理をしているので…。
遅い方にした時はかなりなボトルネックになりました。

>>529
そこは大分確認しました。
一応、後でもう一度きちんとデータを取ってみようと思います。

531 :NAME IS NULL:2009/02/17(火) 07:19:00 ID:dbh1k8JS
>>530
そうですか。
ではちょっと確認してみますね。

とりあえず5000件のランダムデータを書き込んでみたんですけど、
BEGIN〜ENDで囲まないと1分近くかかって驚いたのですが、トランザクション
内ではミリ秒単位ですね。
ずいぶんな差が出て驚きました。
いろんな意味で。

532 :NAME IS NULL:2009/02/17(火) 07:27:41 ID:dbh1k8JS
51秒が0.015秒へ。

533 :NAME IS NULL:2009/02/17(火) 07:53:42 ID:dbh1k8JS
初期化にかかった時間: 0'15''
UPDATEにかかった時間: 0'16''

初期化にかかった時間: 0'15''
DELETE INSERTにかかった時間: 0'16''

5000件中の500件程度では全く変わりませんね。
というか、15ミリ秒程度だと、負荷を気にする意味が感じられませんでした。

使用言語C++
プラットフォームWin32
テストデータはrand()で生成。

534 :NAME IS NULL:2009/02/17(火) 08:08:07 ID:dbh1k8JS
50万件中の5万件について調査。

初期化にかかった時間: 1'500''
DELETE INSERTにかかった時間: 0'609''

初期化にかかった時間: 2'4294966765''
UPDATEにかかった時間: 0'578''

これもほとんど変わらないですね。
0.5秒程度まで来ると少しでも速くしたいと思いますね。
しかし、5万件の更新ですから時間がかかるのも致し方ないとも思いま
す。
5万件の更新と言えば、1日一回夜間に行う程度のものでしょう。
初期化にかかった時間は50万件の挿入ですからIOの状態によって時間が
変わってしまうようです。
平均して1秒台半ばでした。

逆に、UPDATEがDELETE-INSERTと比較して時間が変わらないというのは、
現在の実装はまだ改良の余地があるのかもしれません。

535 :NAME IS NULL:2009/02/17(火) 08:26:47 ID:???
SqliteのUpdateってInsertしてDeleteしてんじゃなかったっけ

536 :NAME IS NULL:2009/02/17(火) 08:35:03 ID:dbh1k8JS
申し訳ない。
自分で書いておきながら数字の読み方間違ってました。
0.015秒じゃなくて、0.15秒。
15ミリ秒じゃなくて150ミリ秒。

件数が大幅に増えても所要時間はあまり変わっていないことになりますね。
全データ量と更新するデータ量が100倍に増えても所要時間は数倍程度でした。

検索ではなく更新に要した時間だということに気を付けてください。
もしかするとSQLiteってかなり使えるかもしれないです。

>>535
だとすると、PHPはCより速いってことにならないですか?

537 :NAME IS NULL:2009/02/17(火) 08:39:51 ID:dbh1k8JS
5000件中の500件更新で0.16秒程度。
50万件中の5万件更新で0.6秒程度。

思っていたよりパフォーマンスがいいと思います。

538 :NAME IS NULL:2009/02/17(火) 09:40:15 ID:dbh1k8JS
調子に乗ってさらにやってみました。

5000万件中の500万件更新

初期化にかかった時間: 160'891''
UPDATEにかかった時間: 80'172''

初期化にかかった時間: 165'250''
DELETE INSERTにかかった時間: 63'312''

1億件中の1000万件更新

初期化にかかった時間: 333'4294967233''
UPDATEにかかった時間: 196'4294966609''

初期化にかかった時間: 343'375''
DELETE INSERTにかかった時間: 166'429''

さすがに時間がかかります。
とはいえ、1億件のデータを挿入して1000万件を更新しても数分です。
これはすごい。
確かにデータ量が多くなるにつれはっきりとUPDATEのほうが遅くなって
きますね。

539 :NAME IS NULL:2009/02/17(火) 11:39:08 ID:???
WHERE 句のカラム (c1 ?) に INDEX を切っての比較きぼん。

540 :NAME IS NULL:2009/02/17(火) 12:42:42 ID:???
なぜExplainしないんだ?

541 :530:2009/02/17(火) 13:32:14 ID:???
以下のような関数を用意して、その関数内でのみ計測を行いました。
多分純粋にexecのみの時間が取れていると思います。
PHP5、sqlite2.1、レコード総数は5000弱です。

function _exec($q) {
 $t0 = microtime(true);
 $result = sqlite_exec($this->dbh, $q); // ←の1行を計測
 $this->keisoku_t += microtime(true) - $t0;
 print (round($this->keisoku_t, 3) . ' ' . $q . "\n");
 return $result;
}

以下結果です。「累積時間 クエリ文字列\n」で出力しています。
一部の文字列をはしょっています。「○○」は固定です。

***方法1***
0.001 BEGIN
0.008 DELETE FROM tbl WHERE c1 = '○○'
0.008 INSERT INTO tbl (c1, c2, c3, c4, c5) VALUES ('○○', '[INTEGER]', '[TEXT]', '[TEXT]', '[INTEGER]')
0.008 INSERT (2回目)
・・・
0.013 INSERT (100回目)
・・・
0.034 INSERT (541回目)
0.260 COMMIT


***方法2***
0.001 BEGIN
0.009 UPDATE tbl SET c2 = '[INTEGER]', c5 = '[INTEGER]' WHERE c1 = '○○' AND c3 = '[TEXT]'
0.012 UPDATE (2回目)
0.021 UPDATE (3回目)
・・・
0.392 UPDATE (100回目)
・・・
2.223 UPDATE (541回目)
2.412 COMMIT



10倍も差が出てしまった・・・

542 :NAME IS NULL:2009/02/17(火) 13:49:29 ID:???
UPDATEも複数回やってんのか。
そりゃクエリの数が違うべ。
DELETEは一回ですんでるけどUPDATEはそのたびにクエリ発生してるじゃないか。

543 :541:2009/02/17(火) 14:04:33 ID:???
>>542
>>535のように
UPDATE = INSERT + DELETEのクエリが発生しているってことでしょうか?
だとすれば大体納得がいきますね。

544 :NAME IS NULL:2009/02/17(火) 14:09:19 ID:dbh1k8JS
>>539
http://77c.org/d.php?f=nk6053.zip

545 :NAME IS NULL:2009/02/17(火) 14:13:02 ID:dbh1k8JS
受信キー SQLite

546 :NAME IS NULL:2009/02/17(火) 14:20:53 ID:dbh1k8JS
インデックスの有無は意外な結果ですね。
初期化時間の欄は挿入に要した時間です。

547 :NAME IS NULL:2009/02/17(火) 14:41:40 ID:???
>>543
つーかWHEREの回数

548 :NAME IS NULL:2009/02/17(火) 14:52:09 ID:dbh1k8JS
さらに1000万件10GB規模追加。

http://77c.org/d.php?f=nk6054.zip
受信キー SQLite

549 :543:2009/02/17(火) 14:56:20 ID:???
>>546
インデックスがあってもUPDATEは若干早くなる程度みたいですね。
DELETE INSERTとUPDATEの時間がほぼ同じなのは興味深いです。
件数が一番多いのは時間が跳ね上がってますね・・・

>>547
ぁああ!確かに
そりゃ遅いですねorz

550 :NAME IS NULL:2009/02/17(火) 15:06:34 ID:dbh1k8JS
>>549

>>548も見てください。
意外ですよね?
これは結構チューニングノウハウがあるのかもしれないです。
疑問を提起してくださって感謝です。

> 件数が一番多いのは時間が跳ね上がってますね・・・

まあ、一億件ですから。
I/Oも高い時で100MB/s軽く超えてました。
かなり効率よくI/Oを使っているのだと思います。
実際にこんな件数入れることは無いと思います。
>>548で件数を減らしてデータ量を上げてみたら逆転したんですよね。

551 :549:2009/02/17(火) 15:22:51 ID:???
今回の件に関する自分なりの理解をまとめてみました。

・DELETEやUPDATEはWHERE句によるシークがあり、クエリを投げる度にシークのロスが生じる。
・INSERTは追加するだけなのでシークによるロスが無い。

→DELETEやUPDATEはINSERTに比べて遅い。
→なので、DELETEやUPDATEの回数は出来るだけ少なくなるようにする。

ただし、INSERTを多用する場合と、UPDATEが少しの場合を置換できる時は、
後者の方が早くなる場合もある。

こんな理解で合ってますでしょうか・・・

>>550
文字列のバイト数に対する時間が、リニアでない(2次曲線的な?)増え方をしてますね。
レコード件数でも恐らくこの増え方だろうと思うのですけど、
この増え方が、SQLiteが大規模運営に向かない理由になるのかも知れませんね。

552 :NAME IS NULL:2009/02/17(火) 15:32:33 ID:dbh1k8JS
> この増え方が、SQLiteが大規模運営に向かない理由になるのかも知れ
> ませんね。

1000万から1億件を扱うデータベースで100万から1千万件の更新に数分
かかるのが問題ならそうなりますね。
おそらくSQLiteの処理にかかる時間より更新するデータを用意する時間
のほうが大きいと思いますが。

おそらくどのような場合でもDELETE-INSERTを使うべきなのだと思います。
今回の実験でUPDATEにメリットは見いだせませんでした。

553 :NAME IS NULL:2009/02/17(火) 15:51:36 ID:???
UPDATE一発ならともかく、個別に変更なのに大量に変更かかるケースが特殊。
それにリレーションの関係で消せなかったりする場合もあるから、常にDELETEINSERT
というわけにもいかないでしょう。

554 :NAME IS NULL:2009/02/17(火) 20:43:14 ID:???
漏れも >>553 に同意だなあ。

INSERT できるってことは元のデータを知ってないといけなくて、
例えば、住所録で電話番号を変更しようとしたら、

A. UPDATE 方式
A.1. UPDATE で当該行の電話番号を変更

B. DELETE-INSERT 方式
B.1. SELECT で電話番号以外のカラムを取得
B.2. DELETE で当該行を削除
B.3. INSERT で電話番号を含むデータを挿入

ってなるんじゃないかと思うけど、
これだと DELETE-INSERT 方式は厳しいような。

DELETE-INSERT を使うべきケースが存在し得るのは否定しないけど、
それは、一括投入可能なデータセットがあらかじめ別途用意されている、
みたいな特殊なケースなんじゃないかという気がする。

555 :NAME IS NULL:2009/02/17(火) 20:56:29 ID:???
>>554
Bの方が速い。

556 :NAME IS NULL:2009/02/17(火) 21:05:11 ID:???
>>555
マジで?いや、実測でそうなら納得せざるを得ないんだけど、俄には信じ難いっす。

557 :NAME IS NULL:2009/02/17(火) 22:06:59 ID:???
sqlite3じゃないのか... バルク処理にprepareとかバインド変数が
使えないAPIっていやだな。
sqlite3だったら↓こういう方法もあるようだが
http://www.sqlite.org/cvstrac/wiki?p=ScrollingCursor

558 :NAME IS NULL:2009/02/17(火) 22:09:43 ID:???
>>557
貼り間違った
http://php.net/manual/ja/sqlite3.prepare.php

559 :NAME IS NULL:2009/02/17(火) 22:30:57 ID:???
>>556
嘘つく理由ないし。
失礼な奴だな。

560 :NAME IS NULL:2009/02/17(火) 22:38:28 ID:???
UPDATEが遅い理由、遅くても使うべき理由は、ロールバック。
たぶん。
速度重視なら使う理由がない。
たぶん。

561 :NAME IS NULL:2009/02/17(火) 22:44:01 ID:???
System.Data.SQLite微妙だった。DataSetに読み込んだとき、
デフォルトで挿入されたはずのNULLが<ファイルが読み込みできない>
とか妙なエラー値?になった。以上報告終わり。

562 :NAME IS NULL:2009/02/18(水) 01:49:28 ID:???
>>560
ロールバックだけならDELETE-INSERTでも良いじゃん。

563 :NAME IS NULL:2009/02/18(水) 03:14:23 ID:???
言葉の通じないアホがそのうちやってくると思います

お手数をおかけしますが、
かわいがってあげて下さい


748 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/02/18(水) 02:09:09 0
SQLiteってどうやってデータベース作るの?
パスワードとかユーザー名とかいらないってのはわかるんだけど...
任意のデータベース名を入れるだけで動くの?どこに保存される?

564 :NAME IS NULL:2009/02/18(水) 03:32:04 ID:???
>>563
それはたのしみだ。

565 :NAME IS NULL:2009/02/18(水) 08:08:08 ID:???
なんでもかんでもSQLiteってのがまちがい

566 :NAME IS NULL:2009/02/18(水) 08:34:57 ID:???
>>565
>>548から察するにほぼ不可能はない。

567 :NAME IS NULL:2009/02/18(水) 08:48:51 ID:???
やっぱりアクセスを越えたんだ

568 :NAME IS NULL:2009/02/18(水) 08:56:04 ID:???
>>567
性能は超えてると思う。
その他が負けてるけど、そこは根性でカバー。

569 :NAME IS NULL:2009/02/18(水) 09:00:05 ID:+e6dGg0R
同時アクセスへの耐性はどうなんよ?

570 :NAME IS NULL:2009/02/18(水) 12:11:31 ID:???
>>569
何度もガイシュツだけど、SQLiteはSQLが使えるストレージとしてみるべきもので、
同時アクセスだのとDBMS的な性能が欲しい場合、MySQLなりPostgreSQLなりを使うべき。

571 :NAME IS NULL:2009/02/18(水) 12:23:50 ID:???
排他制御されるから耐性はあるよ

572 :NAME IS NULL:2009/02/18(水) 16:46:14 ID:???
PostgreSQL(笑)

573 :NAME IS NULL:2009/02/18(水) 22:47:55 ID:???
>>570
database is lockedへの対策はどうしたらいい?

574 :NAME IS NULL:2009/02/19(木) 00:26:46 ID:???
>>573
ロックされてるんだから何の問題も無いだろ
何言ってんだ?

575 :NAME IS NULL:2009/02/19(木) 01:55:18 ID:0Q6cDyVQ
>>573
典型的なコード例が載っているページが公式Wikiからたどれたと思う。

データベースファイルを開くにはどうしたらいいですか?ってレベルの問い
なので、否定的な文脈で書かない方がいいと思いますよ。

ほとんどの疑問について公式サイトに答えがあります。

576 :NAME IS NULL:2009/02/19(木) 02:37:19 ID:???
公式wikiってどこ?

577 :NAME IS NULL:2009/02/19(木) 02:42:37 ID:0Q6cDyVQ
ttp://www.sqlite.org/cvstrac/

578 :NAME IS NULL:2009/02/19(木) 03:53:34 ID:???
>>577
それのどこ?

579 :NAME IS NULL:2009/02/19(木) 05:40:53 ID:???
どれかじゃね?
http://www.sqlite.org/cvstrac/search?s=database+is+locked&w=1

580 :NAME IS NULL:2009/02/19(木) 21:15:45 ID:???
晒し貼り

ロックのタイミングについて
http://stackoverflow.com/questions/564298?sort=oldest#sort-top

581 :NAME IS NULL:2009/02/19(木) 21:43:34 ID:???
PHP勉強中なんですけど、CSVファイルをSQLITEのテーブルにインポートしようとしてるんですけど、CSVを直でインポートできるんですか?
CSV開いて、1行ずつ読んで、INSERT?

582 :NAME IS NULL:2009/02/19(木) 22:58:54 ID:???
>>573
sqlite3_enable_shared_cache() と PRAGMA read_uncommited=1


583 :NAME IS NULL:2009/02/20(金) 00:17:57 ID:???
>>581
できる

584 :NAME IS NULL:2009/02/20(金) 22:08:13 ID:???
>>582
ロックを取得できるまでブロックするとかできないのかい

585 :NAME IS NULL:2009/02/20(金) 23:03:36 ID:???
>>584


586 :NAME IS NULL:2009/02/21(土) 04:00:50 ID:???
タイムアウトがデフォルト0だからそれ伸ばすだけだろ

587 :NAME IS NULL:2009/02/21(土) 14:32:02 ID:???
>>584
sqlite3_busy_handler() でどうぞお好きなように実装してください


588 :NAME IS NULL:2009/02/21(土) 15:54:40 ID:???
>>5
これ複合キーの設定できないんか

589 :NAME IS NULL:2009/02/22(日) 02:41:17 ID:???
SQLiteのメンテナンスツール探してて見つけた。3年近く、更新されていないようだけど...


SQLite Database Browser
http://sourceforge.net/projects/sqlitebrowser/

使ってみた感じ、フィールドの値を更新するのに、別ウインドウにいくのがうっとおしいと思った。

590 :NAME IS NULL:2009/02/22(日) 18:03:31 ID:???
8000件ほどのレコードから100件、15カラムをselectすると0.6秒かかりますが
こんなもんなんでしょうか

591 :NAME IS NULL:2009/02/22(日) 18:07:48 ID:???
インデックスは?

592 :NAME IS NULL:2009/02/22(日) 18:13:39 ID:???
全部にはつけてませんがwhereやjoinに使うカラムのインデックスは作ってます

593 :NAME IS NULL:2009/02/22(日) 22:24:13 ID:???
>>590
カラム数が影響してるからかもしれんが、
遅い気がする。

CPUとメモリ、使用言語は?

594 :NAME IS NULL:2009/02/22(日) 22:26:50 ID:???
CPU:Z80
使用言語:日本語

595 :NAME IS NULL:2009/02/22(日) 22:28:39 ID:???
使用言語なんて関係ないだろうが。どうせ糞みたいな
テーブル設計に糞みたいなクエリを書いてるんだろう。

596 :NAME IS NULL:2009/02/22(日) 22:29:34 ID:???
インデックスが効いてたら0.6秒はないだろうな

597 :NAME IS NULL:2009/02/23(月) 06:23:19 ID:m+7FUQBU
>>590

またベンチとってみたんだけど、インデックスはると計測不能(GetTickCount()で
同じ値が返ってきてしまう)程度に速いんだけど。
分解能がどの程度あるのか知らないけど、NT系55msって話は聞いたことあるし、
これまでも100ms程度を期待して困ったことはないから、それ以上の速さってこと
だろうと思う。
8000レコード15カラム1レコードのデータ量1.5KBで計測。

0.6秒ってどんな環境でそうなるの?
参考までに教えて頂けたらなと。
よろしくお願いします。

と、ここまで書いて気がついた。
もしかしてトランザクションがらみで遅くなってないですか?

598 :NAME IS NULL:2009/02/23(月) 06:25:32 ID:m+7FUQBU
>>597に追加。

8000レコードから100レコードを検索、15カラム1レコードのデータ量1.5KBで計測。

599 :NAME IS NULL:2009/02/23(月) 10:57:15 ID:???
>>592
CREATE TABLE 文とSELECT文をここに書かない限り
誰も何のアドバイスもしようがない。

JOIN や WHERE で使うカラムにインデックスはあるとか言ってるが
どのようなテーブルにどのようなインデックスがあって、それを
どのようなクエリーで使ってるかが判らなければ、そのインデックスが
有効に使われているかどうかなんて判らない。


600 :NAME IS NULL:2009/02/23(月) 10:58:15 ID:???
>>597
1発のSELECT でトランザクションが関係あるわけねーだろ。アホか


601 :NAME IS NULL:2009/02/23(月) 11:00:45 ID:???
>>598
お前も計測に使ったテーブル設計とクエリーを書けよ

計測対象が違うものを計測して、互いに比較する事に
何か意味があるとでも思ってるのか?


602 :NAME IS NULL:2009/02/23(月) 11:04:04 ID:???
SQLite でどのようにインデックスが使われるかはここに書いてある。
http://www.sqlite.org/optoverview.html

英語が読めません(泣) とか言う馬鹿は邪魔だからアクセスでも使ってろ


603 :NAME IS NULL:2009/02/23(月) 12:09:58 ID:m+7FUQBU
>>600
一発のSELECTとは限らないので可能性として。
他の可能性としては、データベースファイルの大きさ。

604 :NAME IS NULL:2009/02/23(月) 19:33:17 ID:???
まあここでまず間違いなく言えるのは>>590の SELECT にインデックスが使われてないってこと。
あとはスキーマと SELECT 文を晒してもらえない限り議論のしようがない。

605 :NAME IS NULL:2009/02/25(水) 08:04:31 ID:???
JOINの使い方が糞じゃないのか?
SELECT文をアップすればいいのに。

606 :NAME IS NULL:2009/02/25(水) 08:22:36 ID:???
単純に60msの読み間違えと見た

607 :NAME IS NULL:2009/02/25(水) 10:36:20 ID:???
コンソールに表示させてスクロールする時間も計ってるとか。

608 :590:2009/02/25(水) 22:52:14 ID:???
えーあまり引っ張るほどのネタではないですが
SQLは見よう見まねで作ってるので、ようは>>595てことだと思います
今見たら>>590はちょっと端折りすぎで、複数条件でのjoinは遅くなるのかってのがおもいっきり抜けてました
単テーブルや単純な結合ならちょっぱやなので検証してくれた人すんません
遅くなるのはこんな感じのクエリ
$sql = "SELECT person.name, period.period, result.point, ...以下いくつかのカラム FROM content
INNER JOIN person ON content.name_id = person.id
LEFT JOIN result ON content.name_id = result.name_id AND cont.period_id = result.period_id
WHERE content.group_id = 数字";

609 :590:2009/02/25(水) 23:01:52 ID:???
画像にするとこんな感じ(テーブル名、カラム名はダミー)
ttp://uploaders.ddo.jp/upload/500k1/src/1235569858639.png
クリエイトなどの操作はFirefoxのアドオンでやってて何度か言われてるインデックスは
id系のカラムのみCREATE INDEX "○○_idx" ON "○○" ("id" ASC, "period_id" ASC)な感じで作ってます
resultテーブルは成績とか得点とかperiod期間ごとの各人の数値
contentテーブルがメインテーブルになり、これを元に各テーブルから人名+付随の情報の一覧を作ります
result のidカラムは今回selectが遅いことから作った物で content.result_id = result.idで繋げると普通に早いです
とりあえずresult.idを作ったことで速度は改善しましたけど
遅い原因が作りが悪いのからなのか2つの条件でLEFT JOINしたからなのか


610 :NAME IS NULL:2009/02/26(木) 10:08:34 ID:???
>>608
CREATE INDEX "result_idx" ON "result" ("id" ASC, "period_id" ASC);
としてたのかな?
これだと id + period_id の複合インデックスか
id のみのインデックスとしてしか効かないので、
ON content.name_id = result.name_id AND content.period_id = result.period_id
では利用されないと思う。
WHERE content.group_id = 数字 のところも同様。

CREATE INDEX "result_multi_idx" ON "result" ("name_id" ASC, "period_id" ASC);
CREATE INDEX "content_multi_idx" ON "content" ("name_id" ASC, "period_id" ASC);
CREATE INDEX "content_group_idx" ON "content" ("group_id" ASC);
あたりを追加すると速くなるかも。ならないかも。

611 :NAME IS NULL:2009/02/26(木) 11:04:54 ID:???
速度が気になったらまずEXPLAINだろう

612 :NAME IS NULL:2009/02/26(木) 11:41:28 ID:???
今のインデックスは全部 DROP して以下の INDEX を定義しなさい。

CREATE INDEX idx_content ON content( group_id, name_id, period_id );
CREATE INDEX idx_person ON person( id );
CREATE INDEX idx_result ON result( name_id, period_id );


613 :NAME IS NULL:2009/02/26(木) 11:44:43 ID:???
↑を定義すれば、>>608 のクエリーで実行される3重ループが
全てインデックスで実行されるようになる。


614 :NAME IS NULL:2009/03/01(日) 07:35:00 ID:???
パスワードでファイルにロックかけたり
暗号化って出来ますか?

615 :NAME IS NULL:2009/03/01(日) 16:35:54 ID:???
できる!

616 :NAME IS NULL:2009/03/01(日) 17:36:58 ID:???
できるんですね
ありがとうございます

617 :NAME IS NULL:2009/03/01(日) 17:54:33 ID:???
>>614
ttp://d.hatena.ne.jp/tateisu/20070117/p2

618 :NAME IS NULL:2009/03/01(日) 18:15:13 ID:???
set_authorizer(authorizer_callback)

このルーチンはコールバックを登録します。
コールバックはデータベースのテーブルのカラムにアクセスしようとするたびに呼び出されます。
コールバックはアクセスが許可されるならば SQLITE_OK を、SQL 文全体がエラーとともに
中断されるべきならば SQLITE_DENY を、カラムが NULL 値として扱われるべきなら
SQLITE_IGNORE を返さなければなりません。
これらの定数は sqlite3 モジュールに用意されています。

コールバックの第一引数はどの種類の操作が許可されるかを決めます。
第二第三引数には第一引数に依存して本当に使われる引数か None かが渡されます。
第四引数はもし適用されるならばデータベースの名前("main", "temp", etc.)です。
第五引数はアクセスを試みる要因となった最も内側のトリガまたはビューの名前、
またはアクセスの試みが入力された SQL コードに直接起因するものならば None です。

第一引数に与えることができる値や、その第一引数によって決まる第二第三引数の意味については、
SQLite の文書を参考にしてください。必要な定数は全て sqlite3 モジュールに用意されています。


619 :NAME IS NULL:2009/03/01(日) 23:35:07 ID:???
AIR使え

620 :NAME IS NULL:2009/03/15(日) 21:26:49 ID:???
よくSQLiteは組み込みDBとして取り上げられるますが、クラッシュ時の
復元などはやってくれるのでしょうか?

621 :NAME IS NULL:2009/03/15(日) 21:45:30 ID:yaGPUN7a
ないよ

622 :NAME IS NULL:2009/03/15(日) 22:03:08 ID:???
そうですかありがとうございました。(´・ω・`)

623 :NAME IS NULL:2009/03/16(月) 00:05:50 ID:???
Adobe Reader に sqlite.dll が入ってたんだね。

>>620
クラッシュ時の復元ではないけど、こんな機能はあるみたい。

SQLite Is Transactional
ttp://www.sqlite.org/transactional.html

624 :NAME IS NULL:2009/03/16(月) 02:53:35 ID:???
つまりクラッシュしても破損しないから復元も何もする必要がない、と

625 :NAME IS NULL:2009/03/17(火) 14:26:17 ID:???
>>620
何度も何度もガイシュツだけど、sqliteはDBMSというよりはSQLで操作できるストレージ
と見るべきもの。

626 :NAME IS NULL:2009/03/17(火) 15:25:30 ID:???
ということにしたいのですね。

627 :NAME IS NULL:2009/03/18(水) 02:34:44 ID:???
ぬるぽ

628 :NAME IS NULL:2009/03/19(木) 10:53:50 ID:o2H2nmJt
ガ3ツ

629 :NAME IS NULL:2009/03/19(木) 14:44:26 ID:2+pNexdR
行レベルロックしないの?これ?

630 :NAME IS NULL:2009/03/19(木) 14:47:33 ID:???
残念ながら。

631 :NAME IS NULL:2009/03/19(木) 17:39:43 ID:???
だがあんまりこまらん

632 :NAME IS NULL:2009/03/19(木) 18:51:32 ID:???
あら、そ

633 :NAME IS NULL:2009/03/20(金) 03:58:56 ID:???
一人で使う物で行レベルロックが必要なケースってなんだ?

634 :NAME IS NULL:2009/03/20(金) 04:11:15 ID:???
マルチスレッドで一気に書き込まれるとか?

635 :NAME IS NULL:2009/03/20(金) 04:18:24 ID:???
それでもテーブル単位のロックで十分じゃない?

636 :NAME IS NULL:2009/03/20(金) 09:56:21 ID:???
行レベルロックついたらもはや「Lite」じゃないな

637 :NAME IS NULL:2009/03/20(金) 10:19:17 ID:???
過去スレのどっかでみたけどそういうことしたいなら
wrapper書いてユーザー管理とかアクセス権とか
そういうのも含めて制御してる人がいるらしいが

638 :NAME IS NULL:2009/03/20(金) 11:12:02 ID:???
適材適所という言葉を贈りたいです><

639 :NAME IS NULL:2009/03/20(金) 12:15:58 ID:???
MySQLとかと違ってSQLiteの利点はデーモン走らせておく必要がないこと
wrapper書いてまで拡張するのはどうかと思うが
基本機能に認証くらいはあっていいとおもう

640 :NAME IS NULL:2009/03/20(金) 12:20:52 ID:???
MySQLは、昔からエンベッド対応しているぞ。

641 :NAME IS NULL:2009/03/20(金) 14:20:06 ID:???
MySQLのスレかと思ったw

642 :NAME IS NULL:2009/03/20(金) 19:10:20 ID:???
MySQLとの大きな違いはGPLか否か

643 :NAME IS NULL:2009/03/20(金) 21:28:06 ID:???
>>633
「一人で使うもの」って、誰が言ったんだ?

644 :NAME IS NULL:2009/03/20(金) 22:03:48 ID:???
>>643
>>625 とかもそうだけど、なんだか独断と偏見で用途を限定させたがる香具師が多いよな。
独りでそう思っとく分には勝手にすればって感じだけど、いちいち他人に押しつけんなよと。

645 :NAME IS NULL:2009/03/20(金) 23:40:42 ID:???
一人でしか使わないとは限らないけど
組み込みDBってもっぱら一人で使われることが多いのでは?

646 :NAME IS NULL:2009/03/20(金) 23:49:00 ID:???
それしか知らないみたいな理由で、
何やるにも無理やり同じ道具使おうとする人いるけど、
目的に応じて適当なものを使う方が結局楽だし良い結果がでると思う。

647 :NAME IS NULL:2009/03/21(土) 02:20:32 ID:???
>>643とか>>644って
よそではMS ACCESS使ってマルチユーザーアプリ(笑)とか言ってそう

648 :NAME IS NULL:2009/03/21(土) 05:12:04 ID:???
このスレ、SQLiteよりFirebirdとか使った方が良さそうな人が居るな。

649 :.:2009/03/21(土) 08:15:19 ID:pMvyn4si
AccessはSQLiteのちょうどいいライバルか

650 :NAME IS NULL:2009/03/21(土) 08:16:32 ID:pMvyn4si
>>646
なんでも知ってるけどたいしたものは作ってない器用貧乏になるよりまし

651 :NAME IS NULL:2009/03/21(土) 08:22:15 ID:???
誰が>>647の相手してやって

652 :NAME IS NULL:2009/03/21(土) 11:00:03 ID:???
accessは最適化しないとすぐにmdbが肥大化するのが嫌
それにスレ違い

653 :NAME IS NULL:2009/03/21(土) 12:10:21 ID:???
Access じゃなくて OOo Base だとどうなん?

654 :NAME IS NULL:2009/03/21(土) 12:45:10 ID:???
>>648
アドバイスありがとうございます
FB使ってみることにします

655 :NAME IS NULL:2009/03/21(土) 16:42:09 ID:8XU5+zpU
sage

656 :NAME IS NULL:2009/03/21(土) 23:00:04 ID:???
>>644
はぁ? 使い方じゃなくてSQLiteのアーキテクチャの話だろ。
お前程度の知能のヤツがシステム開発に関わるんじゃないぞ。周りが迷惑するから。

657 :NAME IS NULL:2009/03/22(日) 00:15:26 ID:???
顔が赤いですよ、飲み過ぎですか?

658 :NAME IS NULL:2009/03/22(日) 00:39:38 ID:???
FirebirdってSQLiteと違ってサービスで重いのかと思ったら
超激軽よく出来てるじゃんSQLiteいらないかも

659 :NAME IS NULL:2009/03/22(日) 02:13:12 ID:???
釣れますね

660 :NAME IS NULL:2009/03/22(日) 05:41:00 ID:???
FBスレかと思った

661 :NAME IS NULL:2009/03/28(土) 09:53:48 ID:???
>>656
弱い犬ほどよく吠えるな

662 :NAME IS NULL:2009/03/28(土) 10:21:40 ID:???
>>661
宿題しろよ

663 :NAME IS NULL:2009/03/28(土) 10:38:16 ID:???
歯を磨けよ

664 :NAME IS NULL:2009/03/28(土) 10:57:11 ID:???
(´・ω・`)

665 :NAME IS NULL:2009/03/29(日) 00:01:12 ID:???
風呂入ったか

666 :NAME IS NULL:2009/03/29(日) 07:29:32 ID:???
また来週!

667 :NAME IS NULL:2009/04/03(金) 01:49:54 ID:???
これWEBでぜんぜんトラブルなく3年以上使ってるわ
SQLite2だけど
Myやポスグレなんかより格段に楽でいい
特に鯖の引越しなんかの時
マジおヌヌメ

668 :NAME IS NULL:2009/04/05(日) 06:16:15 ID:???
うん、便利。
ただ、引っ越しの時楽ちんとはいうものの、
更新処理中にファイルコピーかけちゃうとやっぱり壊れちゃうから
その辺は他の DBMS と同じで注意が必要だね。

669 :NAME IS NULL:2009/04/05(日) 06:53:41 ID:???
んなアホな

670 :NAME IS NULL:2009/04/05(日) 07:52:33 ID:???
一瞬でコピーが終わらない程度に成長したDBファイルをコピーしつつアプリからガンガン更新かけてみればわかるよ

671 :NAME IS NULL:2009/04/05(日) 08:01:20 ID:???
>>670
環境は?

672 :NAME IS NULL:2009/04/05(日) 16:36:17 ID:???
RHEL3

673 :NAME IS NULL:2009/04/05(日) 17:08:17 ID:???
更新中の中途半端な状態がコピーされたら、コピー方が壊れてるのは当たり前な気がする。

674 :NAME IS NULL:2009/04/05(日) 17:33:03 ID:???
>>670
そもそも、バックアップとるのに活性でやるのん?

675 :NAME IS NULL:2009/04/05(日) 19:39:00 ID:???
だから、いくら手軽にバックアップできると言っても活性でやっちゃいけないって話。
SQLiteといえど活性バックアップするなら結局専用フロントエンドでdumpするしかないと。

676 :NAME IS NULL:2009/04/05(日) 19:47:51 ID:???
活性時にバックアップとりたいなら、まずファイルシステムの方でスナップショットとるだろ

677 :NAME IS NULL:2009/04/06(月) 07:25:44 ID:???
シーッ!

678 :NAME IS NULL:2009/04/06(月) 09:59:00 ID:???
今まで .dump して .load するしかないと思ってたけど、
いつのまにかこんなのできてたんだね。
sqlite3 コマンドにも .backup と .restore ってコマンドができてるし。
ttp://www.sqlite.org/c3ref/backup_finish.html
あとで読む。

679 :NAME IS NULL:2009/04/06(月) 09:59:49 ID:???
間違えた。こっちか。同じようなもんだけど一応。
ttp://www.sqlite.org/backup.html

680 :NAME IS NULL:2009/04/06(月) 12:52:42 ID:???
ext3ってスナップショットとれんの?

681 :NAME IS NULL:2009/04/06(月) 13:07:00 ID:???
>>680
LVM段階でとる

682 :NAME IS NULL:2009/04/06(月) 13:45:54 ID:???
>>676
逆。
オンラインバックアップできる準備をDB側で済ましてから、スナップショット作成/コピーコマンドなどを実行する。


683 :NAME IS NULL:2009/04/06(月) 19:36:57 ID:???
じゃDB側での対応がない限りスナップショット取れないってこと?

684 :NAME IS NULL:2009/04/06(月) 19:54:39 ID:???
違う。
DBとして整合性あるデータをバックアップできないという意味だ。
こんなことは、SQLiteに限らず、どのDBや一般アプリのデータでも言えること。

データがファイルとして整合性がとれていることと、DBとして整合性がとれていることは、次元が違うってことだ。


685 :NAME IS NULL:2009/04/06(月) 23:00:09 ID:???
ストレージが絡むとLANフリー無停止バックアップなんて
言ってるところもあるね。

その場合>684のようにDBレベルでフリーズさせてる。

686 :NAME IS NULL:2009/04/07(火) 10:10:20 ID:???
>>683
その程度の機能のない DB なんてあるの?というかそれを DB と呼べるの?

687 :NAME IS NULL:2009/04/07(火) 19:25:54 ID:???
あるんじゃねえの?
ていうか例えばSQLiteは対応してるの?
DBとしての一意性確保とファイルシステムのスナップショットAPI対応とは全く別次元の話だと思うが?

688 :NAME IS NULL:2009/04/07(火) 19:28:23 ID:???
> ていうか例えばSQLiteは対応してるの?

なんでこのスレにいるの?

689 :NAME IS NULL:2009/04/07(火) 23:31:27 ID:???
MySQLだと、オンラインバックアップといいつつ、単純にテーブルロックしてるだけじゃなかったかな。
まあ、スナップショットやらミラーなんかの機能を使えば、そんなのでも用は足りるけど。
そもそも、SQLiteレベルでオンラインバックアップなど必要なのかどうかと。


690 :NAME IS NULL:2009/04/08(水) 01:38:24 ID:???
>>688
対応してるの?

691 :NAME IS NULL:2009/04/08(水) 03:53:07 ID:???
>>690
>>678 とかそれだと思うんだけど、違うの?

692 :NAME IS NULL:2009/04/08(水) 08:12:44 ID:???
>>691
ただファイルのバックアップを取る機能じゃん。
ファイルシステムのスナップショット機能と全然関係ない

693 :NAME IS NULL:2009/04/08(水) 08:51:40 ID:???
>>691 ただの無知
>>692 ただの馬鹿

694 :NAME IS NULL:2009/04/08(水) 10:45:43 ID:???
同意

695 :NAME IS NULL:2009/04/08(水) 12:56:35 ID:???
結局SQLite側で特別な機能を働かせなくてもファイルシステムのスナップショット機能で普通にオンラインバックアップしても問題ないってことでFA?
当然トランザクションかけてていつ電源が切れても問題ないような使い方してる前提だけど

696 :NAME IS NULL:2009/04/08(水) 13:26:05 ID:???
無問題

697 :NAME IS NULL:2009/04/08(水) 18:52:24 ID:???
スナップショットってDBの内部構造を理解してるわけじゃないよね?
DBへの書き込みはAPIを介している限りはアトミックに見えるだろうけど、
稼動中に外からただのデータファイルとして扱ったら
更新途中で矛盾のある状態がバックアップされちゃう可能性ないの?
トランザクションをコミットしてる真っ最中とかさ。

698 :NAME IS NULL:2009/04/08(水) 19:00:14 ID:???
>>696
てことは(他のDBMSはともかく少なくともSQLiteに関しては)>>682が嘘つきってことでFA?

699 :NAME IS NULL:2009/04/08(水) 19:07:18 ID:???
>>697
>更新途中で矛盾のある状態がバックアップされちゃう可能性ないの?
>トランザクションをコミットしてる真っ最中とかさ。

もしそれで問題が起きるとしたら、更新途中に突然の電源断が起きた場合にも問題が起きるってことだよね。

それはトランザクションとは呼べないような気がするんだが、違うかな?

700 :NAME IS NULL:2009/04/08(水) 19:10:57 ID:???
規模の大きいDBだと、チェックポイントみたいなタイミングにブロック単位のイメージのコピーをとって、
トランザクションを1個コミットするたびにトランザクションログみたいのを記録して、
異常終了後には起動時にイメージを復帰して、トランザクションを矛盾しない状態まで
一個ずつ適用して・・・みたいな事やるんじゃないの?

701 :NAME IS NULL:2009/04/08(水) 19:14:09 ID:???
ちなみに前者を物理ログ、後者を論理ログなんて言ってた。

702 :NAME IS NULL:2009/04/08(水) 19:19:10 ID:???
sqliteはロールバック的なのが有った気がするんだが
あれば普通壊れないよね

ソースは曖昧な記憶

703 :NAME IS NULL:2009/04/08(水) 20:33:27 ID:???
>>700
あーなんかIPAの試験でよく見るなそれw

704 :NAME IS NULL:2009/04/09(木) 00:07:27 ID:???
SQLite使ったアプリを強制終了すると[DatabaseFileName].journal ってファイルが残って、
再起動すると無くなるからそういう事やってるんだと思う。

705 :NAME IS NULL:2009/04/09(木) 00:33:11 ID:???
強制終了で中途半端に実行中だったトランザクションをロールバックして
DBファイルを整合性のとれた状態まで戻してるんだよね。

でも、スナップショット取るたびに異常終了時と同じ
回復処理が必要かもしれないなんて、無問題とは思えないけど。
毎回無作為に強制終了してるのと同じじゃん。

706 :NAME IS NULL:2009/04/09(木) 00:34:26 ID:???
つか、まあ好きにやって。

707 :NAME IS NULL:2009/04/09(木) 01:48:09 ID:???
>>705
> 毎回無作為に強制終了してるのと同じじゃん。

それでも問題ないようにするための DB だろ。
気持ち悪いっちゃ気持ち悪いが。

708 :NAME IS NULL:2009/04/09(木) 01:56:53 ID:???
>>705
そこでsqliteコマンドの.dumpですよ

709 :NAME IS NULL:2009/04/09(木) 02:09:02 ID:???
そして>>675に戻ると

710 :NAME IS NULL:2009/04/09(木) 02:28:45 ID:???
馬鹿な学生がいると聞いてやってきますた

711 :NAME IS NULL:2009/04/09(木) 02:39:17 ID:???
>>707
少なくとも強制終了したときに実行中だったトランザクションは落ちる。
トランザクション自体は複数の操作を不可分に実行するための仕組みであって、
不慮の電源断に備えるための仕組みじゃないべ。
もちろんコミット済みの結果は保証しなきゃいけないけど。

712 :NAME IS NULL:2009/04/09(木) 03:10:47 ID:???
SQLiteって、コミット=書き込み、なん?
普通は、パフォーマンス上、そんなことはしないけど。


713 :NAME IS NULL:2009/04/09(木) 03:29:09 ID:???
どこにも書かないでACIDのDは可能なの?

714 :NAME IS NULL:2009/04/09(木) 07:47:55 ID:???
ポスグレなんかだとコミットが必ずしもディスクへの書込み完了を保証するものではなかったような。

715 :NAME IS NULL:2009/04/09(木) 09:51:30 ID:???
SQLiteの場合はCOMMITでfsyncもするので、
COMMITでディスクへの書込み完了が保証される代わりに、遅いね。

716 :NAME IS NULL:2009/04/09(木) 10:48:45 ID:???
そもそもunixのファイルシステムを使ってたら書き込みは保証できないだろうけどね。

717 :NAME IS NULL:2009/04/09(木) 11:02:41 ID:???
>>714
選べる。
ttp://www.postgresql.jp/document/current/html/runtime-config-wal.html

718 :NAME IS NULL:2009/04/09(木) 13:51:48 ID:???
おまいら、ログへの書き込みとデータファイルへの書き込みを混同してるだろ。


719 :NAME IS NULL:2009/04/09(木) 15:10:06 ID:???
いいや

720 :NAME IS NULL:2009/04/11(土) 06:38:46 ID:???
5月に発売予定。

SQLite 入門 第2版
http://www.seshop.com/detail.asp?pid=10463

721 :NAME IS NULL:2009/04/11(土) 18:34:45 ID:???
第二版出るくらいなんだから
一版そこそこ売れたんだな。

722 :NAME IS NULL:2009/04/12(日) 02:47:51 ID:???
SQLite 入門ってほとんど内容が PHP のイマイチな本じゃなかったっけか

723 :NAME IS NULL:2009/04/12(日) 04:32:32 ID:???
SQLiteで入門書が必要な奴はSQLiteを使う価値がないと思うんだ

724 :NAME IS NULL:2009/04/12(日) 18:59:17 ID:???
Warning: fetch(/YTV1/ytv/contents/public_html/data/systemdata/inc/..
/template/temp//%%A1^A1F^A1F5C01F%%display.tmpl.php) [function.fetch]
: failed to open stream: No such file or directory in /YTV1/ytv/contents/
public_html/data/systemdata/Smarty/Smarty.class.php on line 1258


725 :NAME IS NULL:2009/04/13(月) 00:34:08 ID:???
尼のレビューだとsqlite関連はこの本が一番まともみたいな感想が載ってるみたいだな。
まあどの本も読んだ事ないから実際は知らんけど。

726 :NAME IS NULL:2009/04/13(月) 03:23:14 ID:???
>>720=>>721=>>725
宣伝乙

727 :NAME IS NULL:2009/04/13(月) 17:37:56 ID:???
>>723
すまん、買った一人。
SQLをほとんど触ったことない弩級の初心者にはなんとか助かった。
だけど、内容がとても浅いので結局はネット=ここ2chのお世話になった。
振り返るととんでもない質問してる。汗。。知らないというのは怖い。

一旦ハマると楽だよね。SQLite3。ただ、サール類が少ない?ような。

728 :NAME IS NULL:2009/04/13(月) 18:31:02 ID:???
サールってなんやねん。俺。 ツールっす。

729 :NAME IS NULL:2009/04/14(火) 07:29:56 ID:???
どんなツールが欲しい?

730 :NAME IS NULL:2009/04/14(火) 09:36:22 ID:???
phqで既に作成したsqliteファイルを操作できるフロントエンドが欲しい

731 :NAME IS NULL:2009/04/14(火) 10:53:16 ID:???
いくつかあるとおもうけど。
ODBC経由でいいなら汎用品も使える。

732 :NAME IS NULL:2009/04/14(火) 19:29:32 ID:???
firefoxのadd-onにフロントエンドあるけど常用してる人いましたら
なにかインプレッションお願いします。

733 :NAME IS NULL:2009/04/14(火) 20:26:31 ID:???
>>727
うぞうぞあるだろうが。

734 :NAME IS NULL:2009/04/14(火) 22:49:12 ID:???
>>733
>>729
すません。 OS X なのが一つの原因かも。
DabaBase Browser を愛用?してるんですがちと重たいです。
>>731
ODBCの入り口に行ってないっす。
書物 & Internet くらいで回りは Access 使いはいるけどって感じで。

735 :NAME IS NULL:2009/04/15(水) 01:02:29 ID:???
俺はここのところずっと TkSQLite 1本だな

736 :NAME IS NULL:2009/04/16(木) 08:28:53 ID:???
AIRのやつはどう?Litaとかいうの。

737 :NAME IS NULL:2009/04/16(木) 16:58:21 ID:???
CPUがARMの組み込みデバイスでsqliteを使っています。
生成されたデータベースファイルを、intelアーキテクチャのPCで開くと、
データベース内の数値がおかしくなります。
温度データが27となるべきところが-0.23420という感じで壊れます。
データベースの構造自体は問題なく、文字データは壊れません。
エンディアンの違いについて調べましたが、答えは見つかっていません。

原因や対処法について何か心当たりがあれば教えてください。

738 :NAME IS NULL:2009/04/16(木) 17:15:39 ID:???
少なくとも今はエンディアンの違いは無いと思うんだけど、
SQLite 2 を使ってるってことはないよね?
ttp://www.sqlite.org/onefile.html

739 :NAME IS NULL:2009/04/16(木) 17:24:11 ID:???
あ、あと、値を格納したり取り出す箇所のコードには問題は無いかな?

740 :737:2009/04/16(木) 17:41:28 ID:???
sqlite3を使用しています。
値の格納はARMマシンでのみ行っています。ARMマシン上でのsqlite3コマンドでは
当然正しい温度データが表示されます。

dumpを利用すればアーキテクチャの垣根を越えられそうな感じなのでやってみます。

741 :737:2009/04/16(木) 18:24:40 ID:???
dumpで正常に移行できました。
すみませんよく調べたら組み込みデバイスの方はIntelのIXP4xx(たぶん16ビットCPU)でした。
数値データのビット幅の違いが、温度データが壊れる原因の模様です。
dumpしてしまえば全てテキストデータになるので、PCに持っていってreadすれば
正しい数値データとして格納できたみたいです。

742 :NAME IS NULL:2009/04/16(木) 20:37:08 ID:???
>>736
ありがとぉ〜。ちょっと悪戦苦闘したけど立ち上がった時の感動は大きい。こんなんがあったんだ。きびきびと快適っす。

743 :NAME IS NULL:2009/04/18(土) 22:26:41 ID:???
本が2冊しかないとかありえない

744 :本田:2009/04/19(日) 09:16:29 ID:cVrkk1OO
>>743
The Definitive Guide to Sqlite (Definitive Guide) (ハードカバー)
Mike Owens (著)
http://www.amazon.co.jp/Definitive-Guide-Sqlite/dp/1590596730/ref=pd_sim_b_3
# ハードカバー: 464ページ
# 出版社: Apress (2006/5/29)
# 言語 英語, 英語, 英語
# ISBN-10: 1590596730
# ISBN-13: 978-1590596739
# 発売日: 2006/5/29
# 商品の寸法: 23.4 x 18.4 x 3 cm

745 :NAME IS NULL:2009/04/19(日) 15:43:10 ID:???
洋書でも3冊しか出てないんだね

746 :NAME IS NULL:2009/04/19(日) 17:20:23 ID:???
良い物には違いないんだが
特に本が必要とされてないってことなのかな

747 :NAME IS NULL:2009/04/19(日) 17:26:40 ID:???
ぶっちゃけ単なるライブラリだしな・・・

748 :NAME IS NULL:2009/04/19(日) 21:12:30 ID:???
大抵のことは本家に書いてあるしね

749 :NAME IS NULL:2009/04/19(日) 22:19:06 ID:???
オリジナルのC版のSQLiteと、C#とかの他言語で書き直されたSQLiteって
ほんとに互換性有るの?
そういう話題が出たとこ見たこと無いけど。

750 :NAME IS NULL:2009/04/19(日) 22:45:03 ID:???
話題に出ないって事は普通に互換性があるってことだろ

751 :NAME IS NULL:2009/04/19(日) 22:59:32 ID:???
>>749
SQLite.Netはオリジナルのを流用して、それにラッパーを被せてるだけっぽいぞ。

752 :NAME IS NULL:2009/04/19(日) 23:42:44 ID:???
C#で完全に書き直されたバージョンもあるっつの

753 :NAME IS NULL:2009/04/19(日) 23:50:54 ID:???
>>749
kwsk

754 :NAME IS NULL:2009/04/19(日) 23:53:40 ID:???
どれ?

755 :NAME IS NULL:2009/04/20(月) 00:02:08 ID:???
これでしょ?けっこう使いやすそうだよね。まだ使ったことないけど。
ttp://sqlite.phxsoftware.com/

756 :NAME IS NULL:2009/04/20(月) 00:07:48 ID:???
と思ったらこれがラッパなのか?

757 :NAME IS NULL:2009/04/20(月) 00:10:21 ID:???
それはオリジナルのを流用してるよ。
managedonlyってのをダウンロードして、中のexe実行してみればわかる。

758 :NAME IS NULL:2009/04/20(月) 00:21:03 ID:???
1個のDLLにネイティブのコードとC#と両方入ってるって書いてあるな。
知らなかったわ。

759 :NAME IS NULL:2009/04/20(月) 02:53:13 ID:???
>>749
「C#とかの他言語」って他にどんなのがあるの?

760 :NAME IS NULL:2009/04/20(月) 17:23:48 ID:???
>>759
>>749はラッパーと移植の違いが判らない可哀想な子


761 :NAME IS NULL:2009/04/20(月) 17:25:53 ID:???
らっぱっぱーらっぱっぱー

762 :NAME IS NULL:2009/04/20(月) 17:33:55 ID:???
>>749>>752には説明責任があると思うです

763 :NAME IS NULL:2009/04/20(月) 17:39:23 ID:???
ググレカス

764 :NAME IS NULL:2009/04/20(月) 17:40:25 ID:???
もともとのCのライブラリを利用したやつじゃなくて
ネイティブに移植したやつってことだろ
何でそんな心配するのかがわからんが。

765 :NAME IS NULL:2009/04/20(月) 17:59:37 ID:???
>>749>>752>>763には説明責任があると思うです

766 :NAME IS NULL:2009/04/20(月) 19:07:53 ID:???
Cのライブラリはネイティブだろ。ネイティブに移植したやつってなんだよ

767 :NAME IS NULL:2009/04/20(月) 19:08:09 ID:???
>>759
749じゃないけど、JAVAで書かれてるのがあるよ。
http://zentus.com/sqlitejdbc/
ラッパーとPure JAVAなのとを選べるようになってる。

768 :759:2009/04/20(月) 19:18:43 ID:???
>>767
thx! NestedVM ってのがあるのね。なるほど。

C の SQLite → GCC → MIPS マシンコード →
NestedVM → Java バイトコード → pure Java SQLiteJDBC

って感じで変換してるのかな。これなら互換性は高そうな気はする。

769 :NAME IS NULL:2009/04/20(月) 21:28:39 ID:???
フランケンシュタインのようだ。

770 :NAME IS NULL:2009/04/20(月) 21:29:53 ID:???
むしろ互換性が心配な気分w

771 :NAME IS NULL:2009/04/21(火) 17:21:30 ID:???
tksqliteのテーブルスキーマの変更で
unique (name, value)
というようにカラムの組のuniqueを設定するにはどうすればいいんでしょうか?

772 :NAME IS NULL:2009/04/21(火) 18:30:49 ID:???
いまは Firebird に浮気中

773 :NAME IS NULL:2009/04/21(火) 20:46:04 ID:???
できん。unique indexでも作れ。

774 :NAME IS NULL:2009/04/22(水) 10:34:04 ID:???
tksqlite 0.5.8 Windowsスタンドアローン版で
メニューから「データベース」→「インデックスの作成」を選ぶと
こんなエラーが出るんですが…

window name "check3179608976" already exists in parent
while executing
"ttk::checkbutton $tree.check[clock clicks] -style CheckInTree"
(procedure "initColumnList" line 10)
invoked from within
"initColumnList"
(procedure "initTableList" line 15)
invoked from within
"initTableList"
(procedure "initDBList" line 5)
invoked from within
"initDBList"
(procedure "_init" line 110)
invoked from within
"_init"
(procedure "::GUICmd::CreateIndex::run" line 11)
invoked from within
"::GUICmd::CreateIndex::run"
(menu invoke)

775 :NAME IS NULL:2009/04/22(水) 22:54:55 ID:???
SQLiteだけでなくFirebirdもいいけど、Derbyの方が上な気がする、
機能的に。

776 :NAME IS NULL:2009/04/22(水) 23:22:33 ID:???
こんなん来てた。
ttp://sourceforge.jp/magazine/09/04/22/034210
どう使い分けるのが良いかね。

777 :NAME IS NULL:2009/04/22(水) 23:23:31 ID:???
>>775
SQLite: ファイルをSQLで操作するライブラリ群
Firebird: SQLiteと異なり、きちんとしたRDBMS
Derby: Javaなのが売りのRDBMS
全然かぶらないもの比較してどうするんだ?

778 :NAME IS NULL:2009/04/22(水) 23:48:23 ID:???
>777
アプリ組み込みで使えるDB 3種として。

779 :NAME IS NULL:2009/04/27(月) 23:01:25 ID:???
速度はどんなもんなの?

780 :NAME IS NULL:2009/04/27(月) 23:52:20 ID:???
ちょっぱや

781 :NAME IS NULL:2009/04/28(火) 16:42:08 ID:zIGzknAk
組込みなら H2 Databaseっていうのもあるでよ。


782 :NAME IS NULL:2009/04/28(火) 20:40:22 ID:xISXif6/
SQliteって、ひょっとして相関サブクエリできない?

783 :NAME IS NULL:2009/04/28(火) 21:44:12 ID:???
できないと思った理由をkwsk


784 :NAME IS NULL:2009/05/05(火) 02:50:15 ID:???
誰もいないのかな?

stmtのprepareについて質問です。
http://masaki.blogzine.jp/mac_prog/2005/08/sqlite3_prepare_1c07.html
を参考に、最初に1度だけ、query用のstmtをprepareして、sqlite3_clear_bindings、sqlite3_resetして、
使っています。この場合で、

1)query用のstmtでselect実行
2)selectでヒットがなかったら、新しくinsert、commit
3)selectでヒットしたら、その行の一部のカラムを更新

を行なっています。ここで、2)のinsert後、2)がヒットするような、1)のselectを実行すると、
なぜかselectがヒットしません。

2)の後に、query用のstmtをfinalizeしてprepareしなおすと、selectがヒットするようになります。

質問:
stmtは、DB更新後は、prepareし直しが必要ですか。
prepareし直さなくて良くなる方法が何かあるのでしょうか。

sqlite3_expired()と言う関数が怪しかったので、2)の前後で値を出してみたのですが、0が返却され変化無しでした。
処理は1スレッド内です。最新のwindows DLLバージョンを使用しています。

785 :NAME IS NULL:2009/05/05(火) 08:06:58 ID:???
firebird embeded に移った。すげぇのひとこと。

786 :NAME IS NULL:2009/05/05(火) 19:13:59 ID:???
>>784
> sqlite3_expired()と言う関数が怪しかったので、2)の前後で値を出してみたのですが、
> 0が返却され変化無しでした。

 sqlite3_expired() は、DB スキーマが変化した時にのみ 1 になる。

> stmtは、DB更新後は、prepareし直しが必要ですか。

 スキーマを変化させない、単純な更新であれば不要。

> prepareし直さなくて良くなる方法が何かあるのでしょうか。

 BEGIN TRANSACTION とか COMMIT TRANSACTION や
END TRANSACTION を明示的に実行してみるのをお勧めする。


787 :NAME IS NULL:2009/05/06(水) 00:22:57 ID:6uwSdSld
>>785
kwsk

788 :NAME IS NULL:2009/05/06(水) 02:33:04 ID:???
>>786

助かります。expired()など助言ありがとうございます。

BEGIN TRANSACTION、END TRANSACTION を試してみましたがだめでした。

その後調べた結果、sqlite3に問題はなく、
> 1)query用のstmtでselect実行
の処理で、select後で、sqlite3_clear_bindings、sqlite3_reset漏れが見つかりました。
sqlite3_clear_bindings、sqlite3_resetを行なったところ、prepareし直さなくても正常に
selectできました。

selectがうまくいかなかったときのエラーメッセージを書いておきます。
library routine called out of sequence
sqlite3_stepの戻り値は、SQLITE_MISUSE(21)

今度から、おかしいなと思ったらsqlite3_errmsgチェックします

789 :NAME IS NULL:2009/05/06(水) 14:08:51 ID:???
509 :NAME IS NULL [sage] :2009/02/12(木) 03:18:28 ID:???
執念深く、だが何も学ばない馬鹿だな


511+1 :NAME IS NULL [sage] :2009/02/12(木) 04:28:39 ID:???
執念深く、だが何も学ばない馬鹿だな


513 :NAME IS NULL [sage] :2009/02/12(木) 17:09:16 ID:???
執念深く、だが何も学ばない馬鹿だな

790 :NAME IS NULL:2009/05/09(土) 10:39:30 ID:???
sqliteのテーブル書くときに、フィールドに型名つけてますか?
めんどくさいので、プライマリー以外、名前だけで済ましちゃってるんですけど、
まずいことって出てきますかね

791 :NAME IS NULL:2009/05/09(土) 11:02:34 ID:hQmGlj/S
どうせクエリ書くときに型名書けるから別に良いんじゃない

792 :NAME IS NULL:2009/05/10(日) 01:12:39 ID:???
>>790
.schema で訳分からんの困るから普通に定義しといたら?

793 :NAME IS NULL:2009/05/11(月) 00:10:54 ID:???
SQLiteももうVersion7が出たのか・・・技術の進歩は早いなぁ
って思ってこのスレを開いた俺のときめきを返せ!

794 :NAME IS NULL:2009/05/11(月) 04:37:29 ID:???
そんな物元から無かったんだよ

795 :NAME IS NULL:2009/05/11(月) 09:03:57 ID:???
何を今更、もうすぐ8だぜ。

796 :NAME IS NULL:2009/05/11(月) 11:42:24 ID:0V9fcGdB
有効なレコードを示すフラグとしてis_deleted
みたいなカラムがあって(NULLが有効レコード)、
有効なレコードだけを参照するために、
available_xxxといったようなviewを用意しています。

SELECT * FROM available_xxx WHERE ...;
のような単純なクエリだと、
viewを参照してもパフォーマンスは変わりませんが、
次のようなクエリだと非常に遅くなります。

SELECT * FROM yyy LEFT JOIN available_xxx ON ...;
(SELECT * FROM yyy LEFT JOIN xxx ON ... WHERE xxx.is_deleted IS NULL; に比較して非常に遅くなる)

オプティマイザの限界なのかもしれませんが、何か対策はないでしょうか?

797 :NAME IS NULL:2009/05/11(月) 11:44:33 ID:???
EXPLAINしてみた?

798 :796:2009/05/11(月) 13:02:45 ID:???
>>797
ありがとうございます。
実はSQLiteのEXPLAIN結果の読み方が分からないもので、困っていました。
MySQLとPostgreSQLなら読めるんですが…。

799 :NAME IS NULL:2009/05/11(月) 18:29:25 ID:???
EXPLAINしる、っていうレスはここでよく見掛けるんだけど、
実際の読み方まで踏み込んだ話題にまでは展開しないよね。

俺もちゃんとした読み方はわからんのだけど、
とりあえず「Idxなんとか」(IdxGEとか)ってのがインデックスを使用する命令なので、
これが適切なカラムで利用されているかをチェックするようにしている。
検索の速いクエリと遅いクエリで「Idxなんとか」の使われかたを比較すると良いかも。

と、適当なレスをしておいて詳しい人を召喚してみるテスト。

800 :NAME IS NULL:2009/05/11(月) 20:22:34 ID:???
>詳しい人を召喚
お呼びでしょうか?

801 :NAME IS NULL:2009/05/11(月) 20:40:50 ID:???
explain読めないからexplain query plan 〜でインデックス使ってるかどうかしか見てないな…


802 :NAME IS NULL:2009/05/11(月) 21:31:44 ID:???
SQLiteでINDEXというとこんな話があったな
ttp://www.machu.jp/diary/20070125.html#p01

803 :本田:2009/05/11(月) 23:02:23 ID:zaiC2T01
2009 May 7 (3.6.14)

* Added the optional asynchronous VFS module.
* Enhanced the query optimizer so that virtual tables are able to make use of OR and IN operators in the WHERE clause.
* Speed improvements in the btree and pager layers.
* Added the SQLITE_HAVE_ISNAN compile-time option which will cause the isnan() function from the standard math library to be used instead of SQLite's own home-brew NaN checker.
* Countless minor bug fixes, documentation improvements, new and improved test cases, and code simplifications and cleanups.

804 :796:2009/05/12(火) 17:40:36 ID:???
>>799
>>801
参考になりました。ありがとうございます。
viewを使った検索では適切なインデックスが使われていませんでした。
viewを使わない場合の explain query plan は、
全てWITH INDEX と USING PRIMARY KEYだったので、
速度の違いは当然ですよね…。

はてさてどうしたものか…。
(とりあえず、viewを使わないでやっていますが)

805 :NAME IS NULL:2009/05/12(火) 18:19:48 ID:???
ANALYZE コマンドを使ってみるとか。
WHERE 句の条件を入れ替える (A AND B を B AND A にするとか) だけで変わることも。

806 :NAME IS NULL:2009/05/18(月) 22:50:37 ID:???
sqlitespy 1.8.9ってなんか変なエラーで失敗しない?
insert into foo values('hoge',
(select id from bar where fuga = 'ぴよ')
);
って感じのsql投げるとエラー吐くんだけど

807 :NAME IS NULL:2009/05/18(月) 23:01:21 ID:???
>>806
エラー内容書けよ
あと、実行環境(OS, コマンドライン or メンテナンスツール)も

なんとなく、エンコーディング絡みのエラーではないかと、エスパーしてみる

808 :NAME IS NULL:2009/05/19(火) 00:14:14 ID:???
---------------------------
SQLiteSpy
---------------------------
Access violation at address 004B25CB in module 'SQLiteSpy.exe'. Read of address 656D617E.
---------------------------
OK
---------------------------

WinXP, SQLiteSpy 1.8.9


809 :NAME IS NULL:2009/05/19(火) 09:40:19 ID:???
>>806
こちらでは問題なく実行できた。by Vista
Create,InsertのSQLを書けば追試するけど。

810 :本田:2009/05/19(火) 12:04:39 ID:M9GfULoZ
SQLite Release 3.6.14.1 On 2009 May 19 (3.6.14.1)

Changes associated with this release include the following:

* Fix a bug in group_concat(), ticket #3841
* Fix a performance bug in the pager cache, ticket #3844
* Fix a bug in the sqlite3_backup implementation that can lead to a corrupt backup database. Ticket #3858.

811 :NAME IS NULL:2009/05/19(火) 20:42:27 ID:???
>809
削ってもエラーを繰り返すようなところは削ったけど、こんな感じ。

-- tables
CREATE TABLE map (
md5 TEXT NOT NULL,
name_id INTEGER NOT NULL,
PRIMARY KEY (md5, name_id),
CONSTRAINT ct_md5_length CHECK (LENGTH(md5) = 32)
);

CREATE TABLE person (
name_id INTEGER NOT NULL PRIMARY KEY,
name TEXT NOT NULL UNIQUE
);

-- triggers
CREATE TRIGGER fki_map_name_id_person_name_id
BEFORE INSERT ON map
FOR EACH ROW BEGIN
SELECT RAISE(ROLLBACK, 'insert on table "map" violates foreign key constraint "fki_map_name_id_person_name_id"')
WHERE NEW.name_id IS NOT NULL AND (SELECT name_id FROM person WHERE name_id = NEW.name_id) IS NULL;
END;

-- test data
INSERT INTO "person" (name) VALUES('foo');

ここまでテキストに書いて、
sqlite3 try.db < try.sql
ってやってdbを作成。

-- このinsertをsqlitespy上で投げると>808のエラー
INSERT INTO map VALUES ('27FF7EA9CE50076CFC8E794D64957F7C',
(SELECT name_id FROM person WHERE NAME = 'foo')
);

sqlite3.exe (v3.6.14.1)ではエラーがでないのは確認済み。sqlitespy (v1.8.9)だとエラーになる。
手元に残ってないから確認できないけど、sqlitespy (v1.8.8)だとエラーにならなかったはず。
トリガーをはずすとv1.8.9でもエラーにならない。

…ひょっとしてバグ踏んだ?

812 :NAME IS NULL:2009/05/20(水) 08:39:09 ID:???
>>811
追試しました。
SQLiteSpy1.8.9で同じエラーが発生します。
持っている前バージョンの最新が1.8.1でしたのでそちらで試したところ
正常に動作します。

813 :本田:2009/05/20(水) 09:28:22 ID:p8oX8jyw
>>811
http://www.yunqa.de/delphi/lib/exe/fetch.php?cache=cache&media=http%3A%2F%2Fwww.yunqa.de%2Fdelphi%2Fdownloads%2FSQLiteSpy_1.8.8.zip
http://www.yunqa.de/delphi/lib/exe/fetch.php?cache=cache&media=http%3A%2F%2Fwww.yunqa.de%2Fdelphi%2Fdownloads%2FSQLiteSpy_1.8.9.zip

814 :NAME IS NULL:2009/05/20(水) 20:41:44 ID:???
バグレポ書こうと思ったらMLに投げないといけないのか…
誰かML入ってる人いたら投げておいてくれない?

815 :NAME IS NULL:2009/05/21(木) 09:31:18 ID:???
811読んで始めてSQLiteSpy触った素人ですが、
ウチではエラー出ませんでしたよ。
sqlite3で作ったdbでも、Spyで作ったdbでも
811のsql投げてinsertは成功しましたよ。

win xp pro sp3
SQLiteSpy 1.8.9
SQLite3 3.2.8 (XAMPP 1.7.1)

自宅のxp homeでもエラー出ませんでした。

816 :NAME IS NULL:2009/05/21(木) 14:08:54 ID:???
「SQLite 入門 第2版」が出てるね。

817 :NAME IS NULL:2009/05/21(木) 19:12:07 ID:???
blogの記事一つ読めば入門できるsqliteで入門本とか勘弁して欲しい

818 :NAME IS NULL:2009/05/21(木) 19:46:29 ID:???
ニーズなさそうだな。

819 :NAME IS NULL:2009/05/22(金) 09:56:36 ID:???
内容どうでもよくて、書籍が存在する、という事実があるだけでも
知らないひとに説明しやすくなることがよくある。
俺の場合、初期の Ruby とかがそうだった・・・(遠い目)

820 :NAME IS NULL:2009/05/22(金) 12:54:12 ID:???
ああ、そういう向きはあるかもな…

821 :NAME IS NULL:2009/05/22(金) 17:49:08 ID:???
>>819
大昔、Perlのらくだ本の日本語訳本が出たとき、嬉しかったなぁ

822 :本田:2009/05/26(火) 08:46:03 ID:MIdYoisj
2009-May-25 - Version 3.6.14.2
SQLite version 3.6.14.2 fixes an obscure bug in the code generator (ticket #3879) section of SQLite which can potentially cause incorrect query results.
The changes from the prior release consist of only this one bug fix,
check-in [6676] and a change to the version number text.
The bug was introduced in version 3.6.14.
It is recommended that users of version 3.6.14 and 3.6.14.1 upgrade to this release.
Applications are unlikely to hit this bug,
but since it is difficult to predict which applications might hit it and which might not,
we recommend that all users of 3.6.14 and 3.5.14.1 upgrade to this release.

823 :本田:2009/05/26(火) 23:05:21 ID:MIdYoisj
>>822
SQLiteSpy1.8.9は3.6.14を使っているので使用を中止して、
とりあえず3.6.10を使ってるSQLiteSpy1.8.8に戻すのが良い。

824 :NAME IS NULL:2009/05/29(金) 21:24:37 ID:py1Xlk8H
PHP + SQLite3 に限ったことですが、
みなさんPDO使ってますか?
それともSQLite3クラス使ってますか?

825 :NAME IS NULL:2009/05/30(土) 18:26:01 ID:???
PDO+SQLite3で変なエラーが出ることがあるので、PDO+SQLite2で使ってますw

826 :NAME IS NULL:2009/05/30(土) 19:37:43 ID:???
PDOを知らなかったのもあって未だにsqlite2です

827 :NAME IS NULL:2009/05/30(土) 20:25:26 ID:???
SQLiteが使えるようになったからといって、他のRDBMSが使えるようにはならない?

828 :NAME IS NULL:2009/05/30(土) 20:45:58 ID:???
Oracleが使えるようになったらPostgreSQLがびしびし使えるかって言ったら、そうでもないべさ。
でも覚えた事は無駄にはならない。

829 :NAME IS NULL:2009/05/30(土) 22:27:49 ID:???
SQL文はほぼ共通だからね

830 :NAME IS NULL:2009/05/31(日) 01:10:08 ID:???
PDOだったら、それこそDSN変えるだけだしね。テーブルそのものは書き直さなきゃだめだけど。

831 :NAME IS NULL:2009/06/02(火) 09:31:54 ID:???
>>829
そう思っていた時期が俺にもありました

832 :NAME IS NULL:2009/06/02(火) 10:01:46 ID:???
>>785
詳しく

833 :NAME IS NULL:2009/06/02(火) 22:48:32 ID:???
SQLってC言語みたいなものだな。

基本構文は共通だけど、プラットフォームごとにライブラリがバラバラだから
結局書き直す羽目になるという


834 :NAME IS NULL:2009/06/03(水) 08:30:26 ID:???
勝手に拡張するからだろ。

835 :NAME IS NULL:2009/06/03(水) 12:04:37 ID:???
勝手に拡張してないRDBMSってあるの?

836 :NAME IS NULL:2009/06/03(水) 19:55:24 ID:???
DerbyくらいのSQLでとめときゃ、他のRDBMSに移行してもたいして困らんと思うが。

837 :NAME IS NULL:2009/06/03(水) 20:01:36 ID:???
パフォーマンスを追求しようとすれば、汎用性が犠牲になるのもしょうがない。


838 :NAME IS NULL:2009/06/06(土) 17:48:40 ID:???
拡張を拡張だと自覚せずに使うから後で困る。

拡張無効モードとか拡張警告モードとかあるといいのにと思うけど、
移行性を上げる手助けを各DBMSがするはずないか。

839 :NAME IS NULL:2009/06/07(日) 00:34:31 ID:???
あまり関係ないかもしれないが iPhone アプリに SQLite 系のものがちらほら出てきた。
さっきゲットした SQL Database Console (¥115) は iPhone の中で普通に動く。素晴らしい。
で、これにはドキュメントがついてるのでちょっとしたハンドブックみたい。
SQLステートメント初心者には嬉しい。

840 :NAME IS NULL:2009/06/07(日) 02:38:47 ID:???
Android も SQLite 入ってるよね


841 :NAME IS NULL:2009/06/07(日) 03:12:44 ID:???
Palm Pre にも

842 :NAME IS NULL:2009/06/07(日) 08:24:10 ID:???
Parm Pre は知らないけど・・(ごめんごめん)
SQLite 入ってるってことならそうなんだろうけど、ユーザー側に遊べる?アプリとして色々と出てきたって事なんだよね。
で、Android とか Palm Pre? ではどんなアプリがあるん?
後 iPhone では SQLite Editor とか、SqlTool とかもあった。 SqlTool もおもしろそう。

843 :NAME IS NULL:2009/06/07(日) 09:26:17 ID:???
Palm Pre みてきた。知らなかったとは言え、なかなか凄いなこれ。

844 :NAME IS NULL:2009/06/10(水) 19:20:22 ID:izq1V+jd
すいません質問なんですけど
'DELETE FROM quicktag WHERE url = file://C:\folder\file.txt'
という事がしたいんですが、
これを正しくエスケープする方法が分からなくて、分かる方いましたら教えて下さい。


845 :NAME IS NULL:2009/06/10(水) 19:30:48 ID:???
DELETE FROM quicktag WHERE url="file://C:¥folder¥file.txt" ではだめなのか?

846 :NAME IS NULL:2009/06/10(水) 19:46:32 ID:???
>>845
SQLとかプログラム初心者で調べてたら\でエスケープ
とか書いてあったりしてすごい悩んでたんですが、
それで試したらあっさり動きましたw本当ありがとうございます!

847 :NAME IS NULL:2009/06/11(木) 08:24:41 ID:???
ダブルクォートが新鮮だね。

848 :NAME IS NULL:2009/06/11(木) 12:17:05 ID:???
いま、 SQL injection が生み出された瞬間を見たような気がする。

つーか、おまいら、プレースホルダー使おーよー!

849 :本田:2009/06/16(火) 07:16:05 ID:hPXMm7qH
SQLite Release 3.6.15 On 2009 June 15 (3.6.15)

Changes associated with this release include the following:

* Refactor the internal representation of SQL expressions so that they use less memory on embedded platforms.
* Reduce the amount of stack space used
* Fix an 64-bit alignment bug on HP/UX and Sparc
* The sqlite3_create_function() family of interfaces now return SQLITE_MISUSE instead of SQLITE_ERROR when passed invalid parameter combinations.
* When new tables are created using CREATE TABLE ... AS SELECT ... the datatype of the columns is the simplified SQLite datatype (TEXT, INT, REAL, NUMERIC, or BLOB) instead of a copy of the original datatype from the source table.
* Resolve race conditions when checking for a hot rollback journal.
* The sqlite3_shutdown() interface frees all mutexes under windows.
* Enhanced robustness against corrupt database files
* Continuing improvements to the test suite and fixes to obscure bugs and inconsistencies that the test suite improvements are uncovering.

850 :NAME IS NULL:2009/06/18(木) 13:40:46 ID:???
>>848
C#の単体アプリなんだけど危険?

851 :NAME IS NULL:2009/06/18(木) 14:39:51 ID:???
危険かどうかをその理由とともに自分がわかって無けりゃ
どんな場合でも危険だろう。

852 :848:2009/06/18(木) 15:24:23 ID:???
>>850
煽りじゃなくて全くもって >>851 の言うとおり。
文字列のエスケープって初心者が思ってるよりずっと難しい (トラップが沢山ある) ので、
「危険?」とか言っている時点で正しいエスケープは絶対無理だと思う。

プレースホルダを利用したバインド機構を使うべき。
あとは C# であれば LINQ が利用できるかも。

853 :NAME IS NULL:2009/06/18(木) 15:40:04 ID:???
> トラップ沢山

普通に文法みて実装してればそんなことはない。
が初心者にありがちな「俺様にはこれでokそうにみえる」って感じのなんちゃってな実装だと
ダメかも。

854 :848:2009/06/18(木) 15:58:30 ID:???
>>853
> 普通に文法みて実装してればそんなことはない。

初心者には無理だね。断言できる。絶対無理。
初心者に「正しくエスケープしましょう」などと言うのは危険極まりない暴挙。

855 :NAME IS NULL:2009/06/18(木) 16:07:56 ID:???
俺は初心者じゃないから大丈夫、みたいなやつがけっこう危ない。

856 :NAME IS NULL:2009/06/18(木) 16:25:50 ID:???
スクリプト言語はなまじ正規表現サポートが
いんちきエスケープへの誘導になってる気がする。
言語書いたりプロトコル扱った経験があればそんなもの使おうと思わないか
使っても問題ないものが書けるだろうけど。




857 :NAME IS NULL:2009/06/18(木) 16:39:54 ID:???
経験があるから大丈夫って思い込みが超危険。
そもそも処理系自体、正しく使えば安全だという保証はないし。

858 :NAME IS NULL:2009/06/18(木) 18:00:31 ID:???
頭わるいなあ……。
2行目は意味不明。


859 :NAME IS NULL:2009/06/18(木) 18:03:00 ID:???
857は文法みて実装ということが理解できない土方。

860 :NAME IS NULL:2009/06/18(木) 21:11:44 ID:???
エスケープはもはや百害あって一利なし
今その環境で問題なかろうが、ミドルウェアを更新せざるを得なくなった時に死ぬ
バインドしろ

861 :NAME IS NULL:2009/06/19(金) 03:46:53 ID:???
文字列をエスケープしてSQLに埋め込むのって、
プレースホルダを使う場合に対して

* エスケープ処理のオーバーヘッド
* エスケープ解除処理のオーバーヘッド

この2つが余計にかかるわけ。
その上で、エスケープ処理自体にも脆弱性がありえるし
エスケープ処理のバグをつぶすコストも必要になる。

まさに百害あって一利なし。


862 :NAME IS NULL:2009/06/19(金) 03:54:03 ID:???
まぁ、エスケープ処理に固執してプレースホルダを拒否する奴って、
どうせお手軽スクリプト言語でテキトーな単語連結でSQLを組んで
「俺って天才w」とか思っちゃうような痛い奴なんだろうな。

>>858-859
プレースホルダでなくエスケープ処理を採用するメリットが
何か1つでもあるなら教えてくれませんかねwwww


863 :NAME IS NULL:2009/06/19(金) 04:49:46 ID:???
クエリについて質問があります。
ご存知の方いましたら教えてください。

Mozilla Firefox 3.0.10のブックマークファイル(SQLite)から特定の履歴(閲覧)を削除したいです。

やりたい事の詳細は、まず [moz_historyvisits] テーブルの |place id| に格納されている番号を、
[moz_places] テーブルの |id| と比較して、その [moz_places] テーブルの行を削除したいのです。

色々調べて下記の通り試して見たところ、|place id| の一番上の番号(レコード?)分しか [moz_places]
から削除されていませんでした。
※|place id| は、重複データが有ります。


DELETE FROM moz_places WHERE id = (SELECT place_id FROM moz_historyvisits)
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

更に、削除する際の絞込み条件として、[moz_places] の |url| に特定の文字列を ”含まない” もの
のみ削除したいです。

そこで、上のクエリに続けて下記の文も追加してみましたが、繰り返し作業の方法が分からず上と同じく1行分
しか削除できませんでした。


NOT LIKE 'http://www.example.com/%' AND NOT LIKE 'http://%.sqlite.localhost/%'
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

また、[moz_historyvisits] テーブルの |place id| が [moz_places] テーブルの |id| と一致し、
削除したら、[moz_historyvisits] テーブルからもその行を削除したいです。
※|place id| の重複行も [moz_historyvisits] テーブルから削除。


長文で読み辛いかもしれず申し訳ありませんが、ご存知の方がいましたら上記の事ができるクエリ(その他方法)
を教えていただければ幸いです。
何かありましたら補足しますので、どうかよろしくお願いします。


864 :863:2009/06/19(金) 04:51:02 ID:???
続きです。


=================================================================================================================
●places.sqlite [SQLiteデータベースファイル]
-----------------------------------------------------------------------------------------------------------------
■moz_historyvisits [テーブル]                    ※|place id| は、重複データが有ります。
| id | from visit | place id | visit date | visit type | session |
-----------------------------------------------------------------------------------------------------------------
■moz_places [テーブル]
| id | url | title | rev host | visit count | hidden | typed | favicon id | frecency |
=================================================================================================================


●places.sqlite テーブル情報等
 http://builder.japan.zdnet.com/sp/firefox-3-for-developer-2008/story/0,3800087566,20380782,00.htm
■moz_historyvisits フィールド情報等
 http://builder.japan.zdnet.com/sp/firefox-3-for-developer-2008/story/0,3800087566,20382307,00.htm
■moz_places フィールド情報等
 http://builder.japan.zdnet.com/sp/firefox-3-for-developer-2008/story/0,3800087566,20380856,00.htm


●パソコン環境:Windows XP Professional SP3 (32bit版)
●使用GUIソフト:PupSQLite、TkSQLite。
●私の知識レベル:SQLiteは昨日あたりから調べ始めました。
         (また、データベース自体も初めてで、C/PHP/JavaScript/VBSについても全く分からない状態です。
          ただ、JavaScriptとVBSは、なんとか調べて基本的な事だけは若干理解できる程度です。)


2レスに渡ってしまいすみませんが、どうしてもこれらの事を行いたいため、どうかよろしくお願いします。

865 :863:2009/06/19(金) 04:57:54 ID:???
度々すみません。

>>863の2個目のクエリについて、[moz_places] テーブルの |url| に ”含まない” という部分が抜けていました。
(1個目のクエリに続けて2個目の条件を書く方法をメモしておいたのですが、未保存で忘れてしまいました。)

以上、どうかよろしくお願いします。

866 :NAME IS NULL:2009/06/19(金) 04:58:10 ID:???
いや、ほんとエスケープの利点っつーのを一つで良いから教えて欲しいな
データの入力経路、文字コード、HTTPDの設定、PG言語、DBエンジン等によって2重3重4重に行われるエスケープや変換処理を
その組み合わせ、それぞれのバージョンによる動作の違いを過去から未来に渡って完璧に把握し正しく動かすコストなんて払えるのか?
そしてシングルバイトな文化圏の奴らが作ったマルチバイト処理のバグの多さも酷いもんなんだが、それに付き合うのか?

867 :NAME IS NULL:2009/06/19(金) 05:03:16 ID:???
>>863
全部読んでないが複数削除したいなら
WHERE id = (略)
WHERE id in (略)
にしとけ
後は要点纏まってなくて長すぎ
読むのめんどい

868 :NAME IS NULL:2009/06/19(金) 05:08:09 ID:???
土方が沢山釣れるスレですね。
>>862 なんて自分がそうだから相手もそうだと思っちゃう痛い自己紹介までつけちゃって。

869 :850:2009/06/19(金) 05:59:07 ID:???
>>852
使うの自分だけでネットも繋がないので適当に作ってみたんですが
一応気をつけて作るようにしてみます。
プレースホルダはなんとなく分かりました。
LINQも言葉は聞いた事はあったので調べて作ってみます。
ありがとうございました。


870 :863:2009/06/19(金) 06:54:40 ID:???
>>867
レスありがとうございます。
WHERE id INにしたところ、複数削除できるようになりました。

よろしければ、あといくつか回答いただければ幸いです。

●クエリA
 DELETE FROM moz_places WHERE id IN (SELECT place_id FROM moz_historyvisits)
  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

1.上の削除条件に追加で、moz_placesテーブルのurlフィールドに、下記の二つの文字列を含まない場合の式。
  (ANDの位置や括弧等、条件の追加方法が分からないのです。)
  -----------------------
  http://www.example.com/*
  http://*.sqlite.localhost/*
  -----------------------
  ※*は複数の文字です。


2.最初に書いたクエリA+1.を合わせて実行した時に削除される行の、moz_placesテーブルのidフィールドと
  同じ値がmoz_historyvisitsテーブルのplace idに存在したら、このテーブルの行も一緒に削除したいのです。

  要は、メインのテーブルAから、削除したいリストが載っているテーブルBを元に、テーブルAから行の削除を
  した後に、そのテーブルAから削除した部分のテーブルBの行も削除したいのです。


説明というか文章を書くのが下手ですみません。
よろしければ、再度レスをいただけると幸いです。
どうかよろしくお願いします。

871 :NAME IS NULL:2009/06/19(金) 07:48:21 ID:???
>>869
エスケープミスってる状態でファイル名に' or 1;が含まれてただけでそのテーブル全削除になるわけだが

872 :863:2009/06/19(金) 21:32:43 ID:???
863です。

あれから色々試していたところ、>>870の1.については適切かどうかは分からないですが、
実行できるようになりました。(添削していただければ幸いです。)

●クエリB
DELETE FROM moz_places WHERE id IN (SELECT place_id FROM moz_historyvisits)
AND (url LIKE 'http://www.test/%'
OR (url NOT LIKE 'http://www.example.com/%' AND url NOT LIKE 'http://%.sqlite.localhost/%'))

moz_placesテーブルのurlフィールドに・・・・・
http://www.test/を含む場合は削除。
http://www.example.com/*または、http://*.sqlite.localhost/*を含まない場合は削除。


あとは2.を同時に行いたいのですが、これは未だ分からずにいます。


時間のある時で構いませんので、ご存知の方いらっしゃいましたら教えていただけると助かります。
どうかよろしくお願いします。

873 :NAME IS NULL:2009/06/19(金) 21:44:44 ID:???
SQLite 関係なく純粋に SQL の話と思って良さそうなので、
普通の SQL の質問スレに行った方が返事が早いと思われ。
(俺はヘタレなので答えられません・・・orz)

874 :863:2009/06/20(土) 04:20:16 ID:???
>>863です。
SQL質疑応答スレへ移動したいと思うので、一旦こちらで書いた質問は締め切りさせていただきたいと思います。
※上に書いた通り一旦締め切りとさせていただきますが、念のためこちらのスレも確認はしたいと思います。
回答・アドバイスいただいた方、どうもありがとうございました。


>>873
レスありがとうございます。
SQLの質問板に行ってみます。
アドバイスありがとうございました。

875 :NAME IS NULL:2009/06/20(土) 05:23:49 ID:???
SQLiteのDELETE FROM構文で指定できるテーブルは一つだけのはずなので、
一度、検索条件に合致するplace_idからなる一時テーブルをCREATE TEMP TABLEしておき
そのplace_idを元に両テーブルにDELETE掛けたあとDROP TABLEするしかないな。
うん、間違いない。

876 :NAME IS NULL:2009/06/20(土) 05:25:36 ID:???
なんだレス書いてたらもう締め切りか。
じゃ、どうでもいいや。

877 :もる:2009/06/22(月) 15:26:41 ID:NNF6um22
どなたかLitaを使われてsqlite構築されてないでしょうか?
外部参照の設定の見当たらないのですが、ないのでしょうか?

878 :NAME IS NULL:2009/06/22(月) 19:42:56 ID:???
>>877
なさそうだね

直接SQLを発行するしか無いんじゃないの(alter table ~ add constrint ~)

879 :NAME IS NULL:2009/06/24(水) 01:37:52 ID:???
SQLiteってガタガタ言う前に使ってみろって感じなんだよな

880 :NAME IS NULL:2009/06/24(水) 02:47:16 ID:???
((((;゚Д゚)))ガタガタブルブル

881 :NAME IS NULL:2009/06/24(水) 04:51:16 ID:???
上のほうでSQLインジェクションが話題になってるけどsqliteライブラリの「sqlite3_mprintf関数」使えば問題ないよね?

882 :NAME IS NULL:2009/06/24(水) 07:51:23 ID:???
そうやって人に聞くくらいなら迷わず捨てて、placeholderを使うべき。
prepare*, bind_*, executeな。

883 :NAME IS NULL:2009/06/24(水) 08:22:35 ID:???
SQLiteでインジェクトされて困るような状況なのか?

884 :NAME IS NULL:2009/06/24(水) 08:56:07 ID:???
SQLiteで大規模Webアプリ構築を専門としている俺にとっては大問題だ

885 :NAME IS NULL:2009/06/24(水) 18:45:38 ID:???
WWW

886 :NAME IS NULL:2009/06/24(水) 18:52:13 ID:???
>>884
どうせデータを暗号化もしてないんだろ。
injection対策以前にDBファイルを盗まれないように気をつけた方が良いよ。

887 :NAME IS NULL:2009/06/25(木) 14:39:59 ID:???
>>886
こういう奴がセキュリティホールを作るんだろうなぁ。

SQLiteのDBファイル以外でも(CGIの吐き出すログや
CSVファイル等)Webから見える位置に置かねーのは基本じゃね?

そういう基本の前に暗号化とか、何故出てくるのか?

888 :NAME IS NULL:2009/06/25(木) 14:46:52 ID:???
ファイル1個で取り回しが楽だから持ち運びやすいだろ、っていう意味かと思った。

889 :NAME IS NULL:2009/06/25(木) 17:42:58 ID:???
>>887
コンピュータ犯罪で一番多いのが内部犯行だって事は知ってるのか?

890 :NAME IS NULL:2009/06/25(木) 18:03:04 ID:???
>>889
知ってたらどうだというの?

891 :NAME IS NULL:2009/06/25(木) 18:17:22 ID:???
>>884 が暗号化が必要なほどの機密情報を扱ってるかどうかもわからんのに、
いきなり >>886 みたいなレスは余計な御世話だろう。

892 :NAME IS NULL:2009/06/25(木) 18:41:57 ID:???
SQLiteはUSBメモリなんかで簡単に持ち運びできる単なるファイルでしょう。
WEBからinjectされないように配慮する以前にファイルの管理が大事じゃないの?

と言っただけ。


余計なお世話なら、それは失礼しました。

893 :NAME IS NULL:2009/06/25(木) 18:51:10 ID:???
鯖にUSBメモリなんかを不特定者が簡単に接続できる環境が問題だろ(w
暗号化されてれば、そんな環境でもセキュリティ問題無しなのか???

894 :NAME IS NULL:2009/06/25(木) 18:55:42 ID:???
local exploit を気にするんなら、
MySQL だって PostgreSQL だって単一のファイルでこそないけど
単なるファイルなわけだし脆弱性はそれほど変わらんと思うよ。
SQLite なら暗号化しろとかいうのは適切なリスク評価ができてないんじゃないかと。

895 :884:2009/06/25(木) 20:53:51 ID:???
>>884はどう見てもウイットに富んだ粋なジョークだろうよ

896 :NAME IS NULL:2009/06/25(木) 21:55:30 ID:???
>>889
DBファイルが暗号化されてれば、全ての内部犯行を防げるのか。
そりゃー知らなかったな。

つーか内部犯行ならDB暗号化してたって意味ないし、
DBファイル以外にも機密情報なんていくらだってある。

>>892
単なるファイルだから、持ち運ぶ時は他の機密情報と一緒に
暗号化すればいいだけ。

あんごうかwがセキュリティの銀の弾丸だと思ってる馬鹿乙w


897 :NAME IS NULL:2009/06/26(金) 00:10:43 ID:???
>>894で決着付いたな。
もう>>886のライフはゼロだ、勘弁してやれw

898 :本田:2009/06/30(火) 23:14:54 ID:DT70mROv
2009 June 27 (3.6.16)

* Fix a bug (ticket #3929) that occasionally causes INSERT or UPDATE operations to fail on an indexed table that has a self-modifying trigger.
* Other minor bug fixes and performance optimizations.

899 :NAME IS NULL:2009/07/05(日) 20:38:22 ID:jibUJHYP
文字コード気にする必要ある?
ただの\0切りバイト列として扱ってれば問題ない?
後ろに16のついたAPIが俺を不安にさせる

900 :NAME IS NULL:2009/07/11(土) 03:27:13 ID:???
iPhone上でもAndroid上でも

 「SQLiteを制する者がスマートフォンを制する」と言われるようになったりして・・・

901 :NAME IS NULL:2009/07/11(土) 19:53:21 ID:???
>>900
SQLite制した程度でなんもできんよ
でもHTML5のローカルDBとか、SQLiteの未来は明るいな

902 :NAME IS NULL:2009/07/11(土) 21:00:17 ID:???
>>899
まずいとおもう。

903 :NAME IS NULL:2009/07/11(土) 22:31:07 ID:???
>>901
先日、Videoコーデックの標準が各社の足引っ張りで消えたからな。DBもどうなることやら。

904 :NAME IS NULL:2009/07/12(日) 03:53:55 ID:???
>>903
映像CODECと違って、組み込みDBでは特許関連が問題にはならないでそ。

905 :NAME IS NULL:2009/07/12(日) 16:34:22 ID:???
>>901
HTML5のローカルDBって何すか?

906 :NAME IS NULL:2009/07/12(日) 17:02:39 ID:???
ググるとそのまま出てくるけどな

907 :NAME IS NULL:2009/07/15(水) 22:36:29 ID:???
NetCommons2というCMSを使おうとしたがXREAで動かず、相談した知人のサーバを借りてインストールすることになったのですが、そのサーバにはNC2で必要なMySQLが入っていませんでした。
その知人にMySQLを使えるように出来ないかと聞いたところ、SQLiteを使うように言われましたが、NetCommons2では標準でSQLiteをサポートしていません。

MySQL用に設計されているCMSをSQLite用に動作させるツールはあるのでしょうか?
または、コードを書き換えるなどして動作させられるのであれば、その方法を紹介しているサイトや本はありますか?
よろしくおねがいします。

908 :NAME IS NULL:2009/07/16(木) 07:35:24 ID:???
友人にMySQLお願いするのが早いよ

909 :NAME IS NULL:2009/07/16(木) 20:30:15 ID:???
>>907
XREA で稼働しなかった理由は明白なのか?

MySQLの使えるレンタルサーバを探した方が早い。

910 :NAME IS NULL:2009/07/17(金) 13:33:48 ID:???
意図的にロックをかけ続ける方法を教えて

911 :910:2009/07/17(金) 23:02:25 ID:???
自己解決しました

912 :NAME IS NULL:2009/07/17(金) 23:14:07 ID:???
自己解決したら書け

913 :NAME IS NULL:2009/07/17(金) 23:17:47 ID:???
「自己解決したら負け」に見えた

914 :NAME IS NULL:2009/07/18(土) 00:17:51 ID:???
どうやって解決したか書いても罰は当たりませんよ。

915 :907:2009/07/18(土) 00:38:30 ID:???
>>908
好意で借りているのであまり何度も言いづらいのですが、聞いてみますね。。。

>>909
PHPのセーフモードを.htaccessでCGI動作させて何とかインストール完了。
しかし、ファイルをアップロードするためのディレクトリが何故かパーミッション変更できなくなる。
複数のソフトウェアでパーミッション変更を試みてもそのディレクトリだけがアクセスのエラーになる。
そのため、バナーや写真など、ファイルをアップロードしようとしても、ファイルが書き込めずエラーは出ないけど404な状態に。

自分が持ってる有料のスペース3箇所と無料のスペース3箇所(それぞれ別仕様)で同じ症状です。

916 :NAME IS NULL:2009/07/18(土) 10:21:10 ID:???
404ならパーミッションじゃないだろ・・・。

917 :NAME IS NULL:2009/07/18(土) 11:02:24 ID:???
6箇所全部で404つったらアップロード先間違えてるとかどうしようもなく下らない理由しか思いつかないんだが

918 :NAME IS NULL:2009/07/18(土) 11:39:57 ID:???
上のディレクトリのパーミッションとか

919 :NAME IS NULL:2009/07/18(土) 16:47:01 ID:???
>>915
NetCommons2 がセーフモードに対応できていないように見えるんだが…。

>ディレクトリが何故かパーミッション変更できなくなる。
「特定のディレクトリのパーミッションがそもそも変更できない」のか
「パーミッション変更したはずなのに、書き込みができない」のか
「パーミッション変更したはずなのに、稼働させるとパーミッションが
 再変更されてしまう」のかどれだ?


920 :907:2009/07/18(土) 18:14:27 ID:???
>>916-917
説明が足りなかったです。
例えばアップローダで写真うp→書き込み権限が無く書き込めない
→エラーは出なくリンクは張られる→リンクをクリックするとファイルが無いので404
こんなかんじです。

>>918
アップロード用ディレクトリ(何故かパーミッション変更できない)の階下にアップローダや掲示板などの機能ごとで
ディレクトリが作られるのですが、そのディレクトリが書き込み権限が無く自動作成されず、
手動でフォルダを作って、そのディレクトリのパーミッションを変更しようとするとエラーが出ます。

>>919
なるほど。
.htaccessでインストール時にCGI動作するようにし、インストール後にエラーが出るので.ataccessを解除していました。
セーフモード出ない環境で利用することを前提としていると言うことでしょうか。

他のFTPソフト(Windows/MacOSX/Linuxなどで複数)の場合は、パーミッションを変更しようとするとエラーが表示されます。

FFFTPだけは、パーミッション変更できたような雰囲気になるのですが、
ディレクトリを再読み込みして再確認すると変更されていなかったことが確認できます。

921 :NAME IS NULL:2009/07/18(土) 19:32:56 ID:???
エラーが表示されるならその内容を読めば

922 :NAME IS NULL:2009/07/18(土) 20:03:31 ID:???
PHPのお勉強中にファイルが消せないとか、誰もが経験することだから
WebProg板行って質問が吉。

923 :NAME IS NULL:2009/07/18(土) 20:57:39 ID:JHuFvc1a
エラー番号に困ったらなんでもかんでもSQLITE_BUSYを返しとけ!
というウンコな開発方針をなんとかしてください。

あと、他要因のエラー(非バグ)と内因のエラー(バグ)が
なんとなくでいいので区別できるような採番してほしいです。

924 :NAME IS NULL:2009/07/18(土) 21:53:43 ID:???
>>920
ここはSQLiteスレだから、もうお帰り

925 :907:2009/07/18(土) 21:54:46 ID:???
>>922
ネットを調べてると、XREAのPHPは2階層以上のディレクトリをサポートしてない
ようなことを書いているBlogがありました。本当だとしたらムリですね。。。

他の方法を考えてみることにします。


みなさん相談に乗っていただいてありがとうございました。

926 :NAME IS NULL:2009/07/21(火) 17:01:35 ID:???
>>923
あら、そんなにエラー粒度が荒かったか。

こんなんあるみたいだけどこれでも足りないっすかね?

Extended Result Codes
ttp://www.sqlite.org/c3ref/c_ioerr_access.html

927 :NAME IS NULL:2009/07/21(火) 20:14:21 ID:???
>>923
は?

SQLITE_BUSY を返す状況ってのはロック関連だけなんだが。

お前の糞アプリのバグが特定できないからって
勝手に捏造してんじゃねーよバーカ


928 :NAME IS NULL:2009/07/22(水) 08:30:26 ID:???
>>927
夏休みか・・・はあ。

929 :NAME IS NULL:2009/07/22(水) 13:17:31 ID:???
>>927
仕事で使うようになればわかるよ。
学生のうちはただ楽しむだけでいい。
がんばれ。

930 :NAME IS NULL:2009/07/23(木) 00:30:30 ID:???
SQLiteをロックが問題になるような環境で仕事で使っちゃうんだ・・・?

931 :NAME IS NULL:2009/07/23(木) 00:55:44 ID:???
まぁ仕事したことがないと理解しにくいところだろうな。

932 :NAME IS NULL:2009/07/23(木) 02:32:53 ID:???
>>929
具体的に、ロック以外のどんな状況でSQLITE_BUSYが
返されたのか、説明していただけませんか?


933 :NAME IS NULL:2009/07/23(木) 02:34:06 ID:???
うんこしているときかな

934 :NAME IS NULL:2009/07/23(木) 03:39:04 ID:???
横だが、stepしきってないときのcloseとかじゃね?
closeなんて無条件におkだろjk と思っていた時期が俺にもありました
あとは思いつかんな

935 :NAME IS NULL:2009/07/23(木) 19:48:53 ID:???
金のないプロの中の人は大変だな

936 :NAME IS NULL:2009/07/23(木) 20:29:51 ID:???
>>935
板住人の大多数を敵に回したようだな。

937 :NAME IS NULL:2009/07/24(金) 12:11:03 ID:???
何言っても返されて、一レス毎に噛み付き方を変えて頑張る学生さんも
それなりに大変そうではある。

938 :NAME IS NULL:2009/07/24(金) 18:17:18 ID:???
必死だな

939 :NAME IS NULL:2009/07/24(金) 18:36:39 ID:???
プロの中の人も余裕がないな

940 :NAME IS NULL:2009/07/24(金) 18:56:13 ID:???
仕事少ないから必死だよ

941 :NAME IS NULL:2009/07/24(金) 22:12:38 ID:???
しかし、ま、適材適所には違いないだろ。プロの中の人ならなおさら。

942 :NAME IS NULL:2009/07/25(土) 01:13:44 ID:???
ロック問題の発生するシビアな環境で「SQLで操作できるデータファイル」のSQLiteを採用するのはプロの中の人的にどうなの?

943 :NAME IS NULL:2009/07/25(土) 06:22:36 ID:???
そういう環境では使わない。

944 :NAME IS NULL:2009/07/25(土) 11:24:16 ID:???
>>943
痺れるほどベストアンサーだ

945 :NAME IS NULL:2009/07/25(土) 12:47:06 ID:vPpVsBrE
update 〜 でテーブル名のエイリアス使えない?

UPDATE stocks t1 SET category_id = (SELECT category_id FROM categories t2 WHERE t1.category_name = t2.category_name);



near "t1": syntax error

946 :NAME IS NULL:2009/07/25(土) 13:07:17 ID:???
ttp://www.sqlite.org/lang_update.html

947 :NAME IS NULL:2009/07/25(土) 16:15:16 ID:???
>>946
無理なのかな?ありがとう。

updateで複数テーブルの選択も出来ないみたいだし、
sqliteは俺には難しすぎるみたいだわ。

948 :NAME IS NULL:2009/07/26(日) 11:58:19 ID:???
>>942
ファイル操作時に確実にロックをするってのは
シビアじゃない環境だろうと必ず考慮すべきことです。
それをライブラリが用意してくれてるならラッキーだけど
用意してくれてないなら自分でなんとかするだけです。

ライブラリが用意してるロック機構があてにならない というのは
ライブラリ全体の信用問題の話であって
出来てもいないことを実装しますた などと言うような人は
信用できない ということです。

949 :NAME IS NULL:2009/07/26(日) 15:49:56 ID:???
>>948
それを短く一行で

950 :NAME IS NULL:2009/07/26(日) 15:54:28 ID:???
適材適所

951 :NAME IS NULL:2009/07/26(日) 16:28:07 ID:???
>>948
「確実なロック」とか「ロック機構があてにならない」っていうレベルの話なの?

ロックの粒度がデカくてパフォーマンスが出ないとか、デッドロックしまくるとかの
話題だと思っていたんだけど、それ以前ってこと?

952 :NAME IS NULL:2009/07/26(日) 16:46:15 ID:eGiecw6M
>>951
ネットワーク経由のアクセスについてロックを保証できないのは既知の
問題点となっているけど、この問題についてSQLite側で対処するのは
現在無理で将来も無理だと思われます。
では何故、他のDBMSで同様の問題が起こらないかといえば、ネットワー
ク越しの直接的なファイルアクセスを行わないからです。
個人的な意見というか要求ですが、SQLiteはこの問題に対処しない方が
良いと考えます。
ネットワーク越しのファイルアクセスを必要としない多くのアプリケー
ションに余計なオーバーヘッドを負担させることになるからです。

953 :NAME IS NULL:2009/07/26(日) 18:32:06 ID:???
MS ACCESS(笑)とか言ってる奴ほどSQLiteでネットワーク経由のアクセスしてる気がするんだけど
そりゃSQLiteで絶対にやってはいけない事の一つだろ
自称プロの中の人は輝いてるな いろいろと

954 :NAME IS NULL:2009/07/26(日) 20:22:58 ID:???
ネットワーク経由ってどういう意味?
SQLiteってそもそもネットワーク経由では使えないよね?NFSとかSMBとかの話?

955 :NAME IS NULL:2009/07/26(日) 20:39:39 ID:???
>>954
そうだよ。
NFSの方はLinuxだともう少しでロックが完全に出来るようになるから
待ってればなんとかなる。
SMBやCIFSの方は知らん。

956 :NAME IS NULL:2009/07/26(日) 21:52:57 ID:???
他の RDBMS におけるネットワーク経由のアクセスの話と
SQLite で DB ファイルをネットワークファイルシステム上に置く話って、
レイヤーが違い過ぎててごっちゃにして語っちゃいけなくないか?
そりゃおまえいくらなんでも無茶すぎるだろう。

自称でもプロを騙るなよ。

957 :NAME IS NULL:2009/07/26(日) 22:05:29 ID:???
うーむ。というか、 >>942 への回答が >>948 だったり、
>>951 への回答の >>952 で唐突にネットワークの話が出してきたりと、
レスの内容は難解だしコンテキストも支離滅裂だし、大丈夫か?

958 :NAME IS NULL:2009/07/26(日) 22:11:53 ID:???
まあ夏ですから色々湧きますよ

959 :NAME IS NULL:2009/07/26(日) 22:19:09 ID:???
それもそうだな。気にせず生暖かく見守ることにするか・・・

960 :NAME IS NULL:2009/07/26(日) 22:46:24 ID:eGiecw6M
>>956
それ以外にロックの問題は発生しないので>>952を回答としました。
質問に回答すると煽られるようですので、以降は見るだけにしときます。
でわでわ。

961 :NAME IS NULL:2009/07/26(日) 22:52:53 ID:???
残るはなんでもBUSYにされちゃう問題だけか

962 :NAME IS NULL:2009/07/27(月) 00:57:52 ID:???
だから具体的に何と何がBUSY扱いされてんだよ

963 :NAME IS NULL:2009/07/27(月) 01:59:41 ID:???
>>960
いやいや、そうじゃなくって >>952 が残念な人ってことなんだけど…

964 :NAME IS NULL:2009/07/27(月) 03:16:29 ID:???
ウンコ扱いするなら不適切なSQLITE_BUSYの例をさっさと挙げてくれよ

965 :NAME IS NULL:2009/07/27(月) 18:28:21 ID:???
とりあえずアホが湧いてるのは分かった。

スレ終わるまでオススメの書籍でも書いといて。

966 :NAME IS NULL:2009/07/27(月) 19:10:54 ID:???
Amazon.co.jp: SQLite入門 第2版: 西沢 直木: 本
http://www.amazon.co.jp/dp/479811944X
和書で SQLite のみにフォーカスした書籍はこれ一択か。
入門用にはとりあえずこの一冊。

Amazon.co.jp: PHP+SQLite実践サンプルブック: 豊崎 直也: 本
http://www.amazon.co.jp/dp/4883374297
(内容不明。補足よろ)

Amazon.co.jp: Pocket詳解 SQL辞典: 堀江 美彦: 本
http://www.amazon.co.jp/dp/4798018619
各種 RDBMS 対応の SQL のリファレンス本で、 SQLite にも対応。
が、ざっと見たところ SQLite に関してはあまり緻密に調べられておらず
不正確なところもあるように見受けられる。

Amazon.co.jp: 基礎から学ぶWebデータベースプログラミング: 堀川 久: 本
http://www.amazon.co.jp/dp/4274065294
前半は SQL の基礎について、後半は Ruby で Web アプリの作成についての説明。
PostgreSQL, MySQL, SQLite の仕様の違いにも触れられている。
が、 SQLite は SQLite2 ベースなので情報が古いかも。


説明は適当なので言いたいところのある方はツッコミや補足よろ。

967 :NAME IS NULL:2009/07/27(月) 21:28:18 ID:???
>>964みたいなのが一番困るな…

968 :NAME IS NULL:2009/07/28(火) 22:30:07 ID:???
>>967
SQLITE_BUSY を返してはならないコンテクストで
SQLITE_BUSY を返すようなサンプルを提示してください。


969 :NAME IS NULL:2009/07/28(火) 22:44:10 ID:???
学生の使うSQLiteとプロ(笑)の使うSQLiteは仕様が違うんだろ

970 :NAME IS NULL:2009/07/28(火) 22:54:33 ID:???
粘着きもいな

971 :NAME IS NULL:2009/07/29(水) 03:51:42 ID:???
事の発端は>923のsqliteウンコ君だけどなw

972 :NAME IS NULL:2009/07/29(水) 08:07:05 ID:???
プロが使用するシチュエーションを教えて欲しいな。

973 :NAME IS NULL:2009/07/29(水) 10:48:59 ID:???
Firefoxとか普通に使われまくってるし
馬鹿げてるのはロックが〜ロックが〜とか呻いてるTPO考えない自称プロ

974 :NAME IS NULL:2009/07/29(水) 20:48:51 ID:???
> プロが使用するシチュエーションを教えて欲しいな。
幼なじみの女の子が親の転勤で自宅に居候する事になった・・・
みたいなシチュエーションではよく使用される。

975 :NAME IS NULL:2009/07/29(水) 23:21:25 ID:???
>>967
えっ、何で?

976 :NAME IS NULL:2009/07/29(水) 23:35:47 ID:???
>>967>>923
そりゃ困るわな

977 :NAME IS NULL:2009/08/03(月) 21:51:45 ID:pSx5VvBp
質問です。
PHP5.2で、SQLite3を扱いたいのですが、
PDOクラスから、特定のテーブルのカラム名と型を取得する
sqlite_fetch_column_types();
を実行するにはどうすればいいでしょうか。
MySQLでしたら、
SHOW COLUMNS FROM テーブル名
というSQL文を発行すればいいのですが、
SQLiteでは関数でしか取得できないのでしょうか。
最悪、sqlite_master テーブルのSQLカラムの値を正規表現等で分割して
取得する手もあるかもしれませんが。


978 :NAME IS NULL:2009/08/03(月) 23:42:11 ID:???
>>977
適当に書いてみたぞ
エラーチェックは適宜やってくれ
あと、インデントは全角スペースなので注意

<?php
function getColumns(PDO $pdo, $tableName) {
 $stmt = $pdo->query("select * from {$tableName} limit 1");

 $count = $stmt->columnCount();
 $columns = array();
 for ($i = 0; $i < $count; ++$i) {
  $columns[] = $stmt->getColumnMeta($i);
 }

 return $columns;
}




979 :978:2009/08/04(火) 00:29:35 ID:???
追記
少なくとも、一件はレコードを返さないと、カラム情報をとれないみたいだ
列数は取れるみたいだから、泥臭いけど

<?php
function getColumns(PDO $pdo, $tableName) {
 $sql = "select * from {$tableName}";

 $stmt = $pdo->query("{$sql} limit 1");
 $count = $stmt->columnCount();

 $sql2 = sprintf('select %s', implode(',', array_fill(0, $count, 1)));
 $stmt = $pdo->query("{$sql} union all {$sql2} limit 1");

 $columns = array();
 for ($i = 0; $i < $count; ++$i) {
  $columns[] = $stmt->getColumnMeta($i);
 }

 return $columns;
}

としたら、結果セットが空でも列情報はとれた


980 :NAME IS NULL:2009/08/04(火) 17:17:10 ID:???
flgasクラスのsetメソッドでUPDATEを呼び出してるんだが、すぐに反映されない。
詳しい人がいたら教えてほしい。

private void doupdate(string flag, object data)
{
string query;
if (flag[0] == '@')
query = "UPDATE flags SET data=? WHERE name=?";
else
query = "UPDATE flags SET data=? WHERE name=? AND owner=?";
_db.setCommnad(query);
_db.setParam(flag);
if (data is int)
_db.setParam((int)data);
else if (data is string)
_db.setParam((string)data);
if (flag[0] != '@')
_db.setParam(accountid);
_db.doQuery();
}

言語:C#

(下は全てのソース)
http://www10.ocn.ne.jp/~mitinoie/Downloads.7z


981 :NAME IS NULL:2009/08/11(火) 13:27:44 ID:???
PHPからPDOで接続したとき、sqlite3のDBファイルが読めなくて、試しにDB作り直すと
読めるようになる(もちろん、データは空っぽ)ことがよくあるんだけど、PHPないしPDOの
バージョンと依存関係が強いのだろうか。開発が止まっているせいか、sqlite2のファイルは
いくらPHPをバージョンアップしても問題ないので、結局sqlite2を使うことになってしまう。

982 :NAME IS NULL:2009/08/11(火) 14:38:40 ID:???
>>981
PHPからアクセスって誰がアクセスしてるんだよ。
一般ユーザか?apacheか?

983 :NAME IS NULL:2009/08/11(火) 15:33:34 ID:???
パスかパーミッションか、でなければ libsqlite3 のバージョンの問題かと思うけど、
「読めなくて」だけでエラーメッセージも何も確認しないようではどうしようもない。


ところで、 >>1-3 以外に次スレのテンプレで必要なものがあれば、
あと 17レス以内でよろしく。

984 :NAME IS NULL:2009/08/11(火) 15:42:32 ID:???
>>981
原因を決め打ちしてると本当の原因を見つけられなくて結局なおらない。

985 :NAME IS NULL:2009/08/12(水) 15:29:59 ID:???
SQLite version 2.8.17からSQLite3にデータベースを変換しようと思って
「2」で.dumpコマンドを発行したんだが、一部の文字列が「'」でくくられておらず
「3」の.readでエラーになってしまうのだが、これってSQLite2のバグなのか?
それともデータベースファイルの方がおかしいのか?

986 :NAME IS NULL:2009/08/12(水) 17:53:17 ID:???
むむむ、そんなことあるのか。
文字コードがおかしい (Shift_JIS とか) ってことはないよね?

218 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)