sqlite3でupdateとかDB更新すると高い確率でjournalというファイルができてDB本体に書き込まれていないのですがどんな原因が考えられるでしょうか?何回かに1回は正常に更新できてjournalもできません。
>>136 DBに書き込めないって、何を持って書き込めないって言っているの?
sqlite上からSELECTした結果が出ていれば、DB的には書き込めているのだけど?
journalファイルだけしか更新されていないよんという話なら、VACUUMしてみ。
journalファイルだけできていて本体のDBはupdateされてないという状態です。selectしても更新前の値のままです。 なぜか知らないけどjournalファイルをエクスプローラ上で削除するとDBが更新されてる。 何回かやってたらjournalファイルができずに普通に更新されるようになったりとわけがわからないです。
基本的なことかもしれませんが、journalファイルができずに更新できる場合とjournalファイルができてしまう場合はどのように違うのでしょうか? journalファイルができて残ってしまうということは正常にdb書き込みができていないという理解で正しいでしょうか? sqliteはpythonからたたいているのですが db open -> update -> commit -> db close という順番で、commitは呼び出しています。
beginしてないがな あとupdateとcommitでエラーが発生していないのは確かか?
馬鹿は使うな
>>140 コメントありがとうございます。
pythonのsqlite3モジュールではconnectionオブジェクトがトランザクションを管理しているのでbeginは呼び出す必要がないと思います(実際そういうメソッドもないです)。
ただ、auto commit modeにしてないときはDB書き込み時だけcommit()を呼ぶのが決まりだそうです。
参考:
ttp://xania.org/200711/python-sqlite-gotcha 非常に短いコードですが下でも問題の現象が再現します。journalができて書き込みできてない場合とjournalができず正常に書き込める場合があります。
もしご存知ないようでしたらpython特有の問題かもしれないのでpythonスレ行きます・・・
import sqlite3
db = sqlite3.connect("test.db", isolation_level=None)
db.execute("CREATE TABLE test (id INTEGER, data VARCHAR(10));")
db.commit()
db.execute("INSERT INTO test VALUES (1, 'hello');")
db.execute("INSERT INTO test VALUES (2, 'bye');")
db.commit()
db.close()
Pytonからではなく、sqliteコマンド使った際はどうなるの?
>>143 sqlite3.exe test.db
CREATE TABLE test (id INTEGER, data VARCHAR(10));
INSERT INTO test VALUES (1, 'hello');
INSERT INTO test VALUES (2, 'bye');
まったく問題なく書き込めてます。
ためしに別のマシンで上のpythonスクリプトを走らせてみましたがまったく問題なく書き込めました。
しばらく前にWindows起動時にchkdskが走ってたことがあったからHDDが破損しているのかも。
ちょっとスキャンディスクやってみます。
一応ご報告まで あれからプロジェクトのフォルダを別のパスへ移動したり別のドライブへ移動したりしましたがその場合はjournalができずに正常に書き込めました。 やはりハードディスクに何か原因があるようです。 コメントくださった方ありがとうございました。
いいえ、どういたしまして。
いいえ、こちらこそ。
148 :
NAME IS NULL :2009/12/09(水) 21:14:21 ID:+arAhXjQ
SQLite Release 3.6.21 On 2009 Dec 07 (3.6.21) Changes associated with this release include the following: * The SQL output resulting from sqlite3_trace() is now modified to include the values of bound parameters. * Performance optimizations targetting a specific use case from a single high-profile user of SQLite. A 12% reduction in the number of CPU operations is achieved (as measured by valgrind). Actual performance improvements in practice may vary depending on workload. Changes include: o The ifnull() and coalesce() SQL functions are now implemented using in-line VDBE code rather than calling external functions, so that unused arguments need never be evaluated. o The substr() SQL function does not bother to measure the length its entire input string if it is only computing a prefix o Unnecessary OP_IsNull, OP_Affinity, and OP_MustBeInt VDBE opcodes are suppressed o Various code refactorizations for performance * The FTS3 extension has undergone a major rework and cleanup. New FTS3 documentation is now available. * The SQLITE_SECURE_DELETE compile-time option fixed to make sure that content is deleted even when the truncate optimization applies. * Improvements to "dot-command" handling in the Command Line Interface. * Other minor bug fixes and documentation enhancements.
System.Data.SQLite 1.0.65.0 を使用しています。 PRIMARY KEY (id, name, comment) という制約を CREATE TABLE 時に指定したのですが id のレコードが重複しただけでエラーになります。 id, name, comment の3つすべてが重複した時点でエラーになる 記述方法はあるのでしょうか?
150 :
149 :2009/12/11(金) 16:35:55 ID:???
すいません気のせいでした。
151 :
NAME IS NULL :2009/12/11(金) 21:44:26 ID:hA6Gai8K
pupsqliteで作成したBOOLEAN型のtestというキーがあります。 NULL OKのキーです。 以下のSQLを実行すると構文エラーが発生します。 select * from test_db where delete != '' TEXT型に同じことを実行した場合はエラーとなりません。 どこが間違えているのでしょうか?
deleteなんてカラム名がやばいンじゃね?
select * from "test_db" where "delete" != ''
154 :
NAME IS NULL :2009/12/16(水) 12:52:24 ID:Kj2cXgn5
sqlite3_exec() で、".read hoge.sql"みたいなのが使えないけど どうすれば使えるようになるかな
.read 'hoge.sql'
sqlite3_execってSQLいてコマンドもつかえるの?
Sqlite 2.8.17なんだけど、AUTOINCREMENTって使えないの? INTEGER PRIMARY KEY AUTOINCREMENTだと SQL error: near "AUTOINCREMENT": syntax error って怒られるんだけど INTEGER PRIMARY KEY で同じIDが再利用されないようにするには論理削除するしかないってことっすかね?
INTEGER PRIMARY KEY でオートインクリメントになるよ そういうことでなくて?
あぁ、ゴメンなさい。 判りにくいですね。 オートインクリメントでINSERTした最新のレコードをDELETEして、 またINSERTすると、同じ番号になっちゃうので、それを避けたいということです。
論理削除って削除フラグ付けるって話か オートインクリメントだけの別テーブル作ってそっちからキーもらってくるとか
すまん、sqlite3.exeと間違えた。
たしかに
このソフト最近知りました。 ところで皆さんはSQLite用のDAO、DTOとかレコードセット(データテーブル)クラスなどは自作ですか? 私も作りたいんですが何か参考になるようなオープンソースなどのソフトは無いでしょうか?
ぐぐって探した
>>164 一通りの言語でDAO/DTO関連の自動生成整ってると思うけど・・・
「IDE SQLite 好きなO/Rマッピングツール」で検索かければ?
SELECT * FROM A; ってデータベースロックするの?
168 :
NAME IS NULL :2010/01/06(水) 22:33:09 ID:awKYQKBZ
最大同時接続数なんチョン?
>>168 同時は無いな。ulimitの上限いっぱいまでいけるだろ。1万くらいだっけ?
>>167 フロントエンドのコマンドプロンプトからだとロックしてるっぽいなぁ
SELECTだけなら大丈夫だろうと安易に実行してたら、
裏で動いてるINSERTとかが失敗してることが偶にある
とりあえず.timeoutとかで逃げてるけど
171 :
NAME IS NULL :2010/01/08(金) 00:57:37 ID:VM6S2FNA
SQLite Release 3.6.22 On 2010 Jan 06 (3.6.22) Changes associated with this release include the following: * Fix bugs that can (rarely) lead to incorrect query results when the CAST or OR operators are used in the WHERE clause of a query. * Continuing enhancements and improvements to FTS3. * Other miscellanous bug fixes.
次のリリースでsqlite3.dllが500KB超えそうだな
500KBだろうが1MBだろうがいくつでも構わない
174 :
VIPPPPP :2010/01/09(土) 23:05:15 ID:s0u/5x2j
□□□□□□□□□□□□□□□□□□□□□□□□□□ □■■■■■□□□□□■■■□□□□■□□□□□■□ □■□□□□■□□□■□□□■□□□■□□□□□■□ □■□□□□■□□■□□□□□■□□□■□□□■□□ □■□□□□■□□■□□□□□■□□□□■□■□□□ □■■■■■□□□■□□□□□■□□□□□■□□□□ □■□□□□■□□■□□□□□■□□□□□■□□□□ □■□□□□■□□■□□□□□■□□□□■□■□□□ □■□□□□■□□■□□□□□■□□□■□□□■□□ □■□□□□■□□□■□□□■□□□■□□□□□■□ □■■■■■□□□□□■■■□□□□■□□□□□■□ □□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□
他のテーブルのデータで更新したいのですが update a set item1=(select b.item1 from b where a.key=b.key), item2=(select b.item2 from b where a.key=b.key) これをもっとスマートにできないでしょうか? oracleだと update a set (item1, item2)=(select b.item1,b.item2 from b where a.key=b.key) こんな感じになると思うんですけど
SQLiteとOracleを比べちゃう男の人って・・・
突然何言ってんだこいつと思ったら
>>175 にカッ飛んだレスしてたんだな
SQLiteのデータベースを大量に作成する運用って、現実的でしょうか? Webサービスでユーザーごとにデータベースファイルを作成するようなケースです。
へんてこりんな設計だな。好きにしたら。。。
>>179 それぞれのDB間にほぼ関連性が無いのなら、大いに現実的な実装でしょう。
>>179 むしろそういう実装にすべき
SQLiteはデータベースロックをしちゃうんだから、ほかのユーザがロック中でも
影響無くアクセスが出来るようにDBファイルをきちんとわける
Webサービスで使うならばMySQLとかの良くね?
(1) SELECT してレコードの存在チェック(必要に応じて行Lockも行う) (2) レコードが無ければ INSERT (3) レコードがあれば UPDATE じゃなく一文でやるような方法はsqliteにありますか?(mysqlでいうとreplaceのような) または、前述の方法は妥当ですか?
それともう一つ とりあえずinsertする→unique制約で怒られる→updateする とうのもあるんですがこれもありですか?
途中で書いちゃったぜ
>>184 replace into はsqliteにもあるよ
System.Data.SQLite 1.0.65.0 を使ってCSVファイルをインポートしたいんですが、可能です? 一行ずつinsertしかないですかね?
哲学的なことに聞こえるかもしれないけど 可能です?とか聞いてくる人には不可能。
REPLACE INTO でレコードを更新した時、更新後のレコードのrowidは last_insert_rowid()で得られますが、更新前のrowidを取得する方法はありますか? REPLACEする前にSELECTで取得するしかないでしょうか?
>>191 rowidって更新されるの?しらんかったわ
rowidが更新されるって話は誰もしてないと思うんだが
>>193 更新されることが前提の花氏でしょ?
更新されないならREPLACE後に取ればよくね?
そらそうだ
REPLACEに失敗した時に取りたいとか にしても書き方が悪いが
System.Data.SQLite 1.0.65.0 を使用しています。 C#のプログラム上からDBファイルを File.Deleteで消そうとすると まだアクセスしてますって怒鳴られます。 プログラム上から削除する方法やコマンドなどありますか?
DBをcloseしてから削除
>>198 SQLiteConnection を new して
すぐ Close してから
File.Delete したら消えました。
いつも SQLiteConnection のインスタンスを using でくくってるので
自動的に Close してくれてるものだとばかり・・
ありがとうございました。
PupSQLite使ってる方、 「フィールドの編集」画面の インデックスのチェック欄と実際の設定ちゃんと合ってます? 何か設定してあるのにチェックが入ってないですけど・・・。 ver.1.8.7です。
INSERT って一行ずつしか無理なんだな
うん
>>201 INSERT INTO People(Name, Age) SELECT '田中', 20 UNION ALL SELECT '佐藤', 22 UNION ALL SELECT '山田', 21;
テーブルとかid?の名前って半角の方が無難?
>>204 経験的に半角英数字記号(_とか)を使うことが無難
SQLite的には関係ねえが、糞みたいなラッパーとか糞みたいな環境から 使うときに問題になる可能性があるだけだ。
あと、当然ながらコードには気を付ける必要あり。
なんかUPDATEに失敗するときがたくさんあるんだけど 気のせい?
ああロックなんとかってエラーがでてたわ select でループ中にUPDATE しちゃいけないのねorz
そのスキルでよく使えたな
コピペだもん
もうすぐSQiLLってのがでるぞ
DSかっ
215 :
NAME IS NULL :2010/02/17(水) 10:06:57 ID:TLiI1xWz
SQLiteManagerで、SQLite3のDBにアクセスしたときに次のエラー 出る人います? Fatal error: Cannot redeclare class sqlite3 in /hoge/hoge/SQLiteManager-1.2.3/include/sqlite3.class.php on line 311 SQLite2のDBだと普通に表示される。例のDeprecatedエラーじゃないから 対処方法を捜索中です。 使用環境: OS:FreeBSD7.1 SQLiteManagerへようこそ バージョン 1.2.3 SQLite バージョン 2.8.17 - 3.6.19 / PHP バージョン 5.3.1 Cannot redeclareでぐぐってみると、インクルードの再定義によるエラーだとか。 includeを探してinclude_onceにするフラグ?
216 :
215 :2010/02/17(水) 10:38:07 ID:???
あげてスマンかった。 ちょっとXDebugでCall Stackをちぇっくしてみた。 1 0.0007 388352 {main}( ) ../main.php:0 2 0.0096 999752 SQLiteDbConnect->SQLiteDbConnect( ) ../main.php:90 3 0.0097 999780 SQLiteAutoConnect->sqliteGetInstance( ) ../SQLiteDbConnect.class.php:78 main.phpのインクルードは、 include_once "include/defined.inc.php"; include_once INCLUDE_LIB."config.inc.php"; defined.inc.phpのインクルードは、 include_once "./include/user_defined.inc.php"; config.inc.phpのインクルードは、 include_once INCLUDE_LIB."grab_global.php"; include_once INCLUDE_LIB."SQLite.i18n.php"; include_once INCLUDE_LIB."SQLiteAutoConnect.class.php"; include_once INCLUDE_LIB."common.lib.php"; ふえるわかめ並みにわけわかめ。
>>215 DBのテーブル名とかカラム名にmysqlの予約語が
混じってんじゃないの?
mysqlの予約語じゃねーよphpの予約語だよ
219 :
215 :2010/02/17(水) 16:34:57 ID:???
>>217 >>218 使っていない。というか、sqlite3で新たに作ろうとするとエラーは出ないが
データベースが作られない…orz
うごいてないっぽい・・・・(;~;)
220 :
215 :2010/02/17(水) 16:41:52 ID:???
追加で言うと、PHP5.2.9では問題なく動いていた。 その時に登録されたDBを開こうとするとこのエラーになる・・・。
データの中身に、ピリオド使えたっけ? 出勤管理するんだけど、入力にコロンを使うと年寄が各自で入力なんで無理っぽい。 9:35出勤なら9..35とテンキー入力させて、sqlからデータを吐かせてエクセルで加工しようと思ってる。 だからピリオドは通るのかな?と思ったんだけど、どう? 通らない場合、なにかテンキーにある、通るキーで、エクセルが計算しちゃわないキー教えてほしい
>>221 データベースなんだから、当然データの中身は何でもあり
>>221 エクセル使うなら現在時刻入力ボタンでも作っとけ
224 :
NAME IS NULL :2010/02/19(金) 10:34:48 ID:yDgPgBKP
C++でアプリを作成しています。 ローカルデータの管理にsqlliteを使用しようとしていろいろ勉強しています。 データのデータの書き込み読込み、クエリ実行など基本的なことはできました。 基礎的な質問かも知れませんが、テーブルの行数をカウントしたいのですがどのようにすればよいでしょうか? select文で指定テーブルを、sqlite3_step()で1行ずつカウントするのは可能なのですが、 どうもスマート方法に思えません。 よい関数などありましたらご教授おねがいしたいです。
SELECT COUNT(*) FROM foo WHERE xxx=yyy; はずしてる?
>>224 select count(*) from hoge;
ってことになると思うが、C++より先にSQLを勉強すべきだよな
227 :
NAME IS NULL :2010/02/19(金) 11:23:48 ID:yDgPgBKP
>>225 , 226
ありがとうございます。
確かに今回のアプリ作成で急遽SQLの勉強も始めたので、SQLに関する知識も低いですm(_ _)m
最後に質問なのですが、
select count(*) from hoge;
でステートメントを作成後に、
sqlite3_prepare()
sqlite3_step()
sqlite3_data_count()で行数を取得できるのでしょうか?
>>227 sqlite3_step() の後
const int nCount = sqlite3_column_int( statement, 0);
で取れると思う
ん?不用意な変更防止のためなるべく付けるようにしているだけ 絶対間違わない自信があるんならつけなくてもいいんじゃね?
正直C++のconstは汚い
>>223 残念ながらスキルなし・・・
今年初めてWordだのエクセルだの触り始めた。
SQLだってさっぱりわからない。
これから本を買ったり読んだりして覚えたいけど、とりあえずやっつけで
年度末までに出退勤管理ツールつくらなきゃいけない。
開発言語は「なでしこ」しかない。今から理解できるのコレくらい・・・
なんでそんな仕事引き受けたw
>>233 フリーソフトでも探せば有るんじゃないか?EXCELとかで。
出退勤だけじゃないのでorz 仕事は受けるものではなく、押しつけられるもの、という勤め人です。 さすがにVPNはNTTのサービスにしてもらおうと思ってる。構築しようと試行錯誤したけど無理だ。 Win機しかない上にネットワークの知識もない・・・
>>236 素直に外注しろ
通常業務もあって最初から勉強しながらじゃ、動く物ができるまでに3ヶ月はかかるだろ
C++選んでるのも最悪
ビジネスアプリでC++とか不要すぎ
例えるならカラーボックス組立てるために建築重機の免許取ろうとするようなもん
スポーツ選手と同じで才能のない奴はプログラミングできないよ
>>236 Linux+OpenVPNですぐに張れるよ。ネットワークの知識があれば、結構簡単。
出退勤じゃー、もっとスクリプタブルな言語の方がいいんじゃまいか?
Wind○wsしかないんだとしても、PHPくらいは動かせるだろ?Webアプリにしとけって。
そんなスキルがあれば上のような事情にはならないと思うが・・・ おれも外注に頼んだ方が結局コストが安くすむと思うね。
>>224 のひとではない
「なでしこ」はたしかDelphi系だったと思う
外注はまったく考えてない模様。いっそ自分で外注出してこっそり始末をつけたくなってきた
>>241 別人か
それじゃ外注以外完全に手遅れじゃね
要件が全く見えてこないからいい加減だが、普通の奴なら半日で作っちまいそうな話だけどな
>>236 C++できるならxamppをDLしてphp覚えつつで適当にやるのが一番楽だけどね。
(最低限のhtmlができるなら?という条件付き&DBがmysqlになりそうけど)
ただ、xampp知らなそうなのでhtmlもできないとして、現実的なのはVBS覚えて
エクセルのマクロを書く。
sqliteとのコネクトがあってオフィスアプリと連携で言語を覚えるのが面倒なら
「なでしこ」が以外とおすすめ。(コピペで動く)
入力はドットもなしの4or3桁数字を正規表現でやればよくね?
webアプリ経験者の初心者以外なら環境構築から作成まで半日でできるな。
244 :
NAME IS NULL :2010/02/22(月) 08:54:50 ID:eX4n3ie9
VPNって言ってるから拠点は複数あるんだろうし、出退勤と言ってるくらいだから まだ何も無いのだろうね。 この場合、SharePointで構築するのがお勧めなんじゃないかな。 タイムカードのような有りがちな物を外注するメリットは無いと思う。
>>244 少しは質問者の要件見てやれよw
:の入力も不安視される年寄りにSharepointは使えないし
なでしこしかやった事無い奴じゃ1ヶ月で年寄も使えるようなSharepoint環境を構築するのも無理
それにSharepoint一本で行こうとすると、その内数百万の出費と言う壁に阻まれる
なんとか見た目つくってきました データ押し込めるような見た目とそれをcsvに保存して開くものと。 あとはエクセルでマクロ使って時間計算をできるかな・・・とそっちの方になやむことになりそうです。 タブキー付テンキーとプルダウンメニューをマウスか矢印キーだけで入力させる方向でなんとか。 プログラムの才能とかネットワークを理解する才能が欲しいですorz ネット関連は10年くらい前にISDNのころAnHttpdで鯖立ててcgi設置練習した程度のものなので
興味のある要件だから今後も報告してほしいな すれ違いかな?
今知ったけどSQLの構文で置換とか計算できるのか・・・ なんかリファレンスとか本とかかったほうが良いよね 今後何やらされるかわからないし
SELECT 4 * 5; とか SELECT REPLACE('ABCDEF', 'AB', 'XY') なんかのこと?
さきほどSQLITE入門 という本を購入しました ついでになでしこ公式本も手に入れました 作りかけデータは会社のPCにあるので明日チャレンジしますー とりあえずできたものを半月〜一カ月、誰かに入力してもらい、 色々と変更するべきところを変更し、と言う作業になりそうです。 どこの会社もその業界ならではの形式があるので、誰かそういうものをフリーソフトで出してほしいものです。 出退勤+入出庫時間+燃料+行先 現状ここまで作り込みました。 行先別給与自動計算をつけたいが実装に悩んでます(給与一覧がないw) basicの方が簡単じゃないのかって気分になるのがとってもいやですorz
そういやSQLiteの新しい本が出てたな 買った人いる?
SQLiteがサーバクライアント方式になるラッパーを作った。
SQLiteをWEBで使ってるけどトラブルがぜんぜんないのな 年に1回TKSQLite使ってバキュームするだけ データ5万件くらいならこんなもんか
255 :
NAME IS NULL :2010/03/03(水) 01:22:12 ID:7qgMi6Uf
エクセルわらた
たしかにテーブルがいっこなら5万件程度エクセルで十分だけどさ
Webでエクセル使うの難しい
まぁ難しいというか面倒くさいけど出来ない話ではないな
開発案件でsqliteを使ってみたいが金にならんから止めておこうという話になったw
バックアップ系をオラクルで固めてメインはSqliteにすればいいんだよ
初めまして。当方、日曜プログラマのSQLite初心者です。 「作業ファイルにためた更新データをマスターファイルに反映させたい」 のですが、うまくSQLが組めません。 たとえば *MasterFile(主キー,ID) ID, 氏名, 住所 1, 伊藤, 東京都 2, 田中, 埼玉県 3, 越智, 京都 *WorkFile(主キー,ID) ID, 氏名, 住所 1, 田中, 岐阜県 とあった時に、 マスターファイルの2番目の行の住所を「岐阜県」に置き換える 場合、どういうSQLを組めばいいのでしょうか? UPDATE MasterFile SET MasterFile.住所 = WorkFile.住所 とまでは、直感的で浮かんだのですが、 後半のWHERE句の書き方がまったく分かりません。 開発環境は、FireFoxアドオン版のSQLite Managerで、 MasterFileとWorkFileは同一のファイルにあります。 場違いな質問かもしれませんが、よろしくお願いします。
>>262 例えると
物理のスレで、数字の読み書きが出来ないのですが、足し算をするにはどうすればいいでしょうか?
と聞いてるようなものです。
>>263 やっぱりそうでしたか。
該当する場所へ移動します。レスをありがとうございました。
いや聞くんじゃなくてちょっと調べりゃわかるだろう WHERE句はSELECTと同じなんだから、まずSELECTできるように書いてみては
試行錯誤という言葉をしらないんだな.
ケチケチしてんなや と思ったけど、この場合考えられる用件は二種類あるんだよな 「重複する氏名を見つけて住所を書き換える」作業をSQLiteのSQL文だけでやるんだとしたら、ちょっと面倒だな
超基本構文でやれるが・・・
ならケチケチしてんなや
>>269 いいからお前が答えとけ
「ちょっと面倒」で済むんだろ?
ケチケチしてんなや
厨房もSQLite使えるんだ
>>261 なるほど
案外変なトラブルがなくていいかもね
273 :
NAME IS NULL :2010/03/12(金) 06:22:30 ID:obqGxIVQ
SQLite Release 3.6.23 On 2010 March 09 (3.6.23) Changes associated with this release include the following: * Added the secure_delete pragma. * Added the sqlite3_compileoption_used() and sqlite3_compileoption_get() interfaces as well as the compile_options pragma and the sqlite_compileoption_used() and sqlite_compileoption_get() SQL functions. * Added the sqlite3_log() interface together with the SQLITE_CONFIG_LOG verb to sqlite3_config(). The ".log" command is added to the Command Line Interface. * Improvements to FTS3. * Improvements and bug-fixes in support for SQLITE_OMIT_FLOATING_POINT. * The integrity_check pragma is enhanced to detect out-of-order rowids. * The ".genfkey" operator has been removed from the Command Line Interface. * Updates to the co-hosted Lemon LALR(1) parser generator. (These updates did not affect SQLite.) * Various minor bug fixes and performance enhancements.
dll500kb超えたか
もうだめポ
っ Linux, *BSD
web鯖がsqliteに対応してないといわれてしょぼーん・・・ MySQLでつくれって殺生な・・・
そんな殺生かい?
MySQLみたいなカスライセンスのカスDBなんて触れたくも無い
えっ、そうなの?
WebでSQLiteは使えなくはないけど、見極めは大切 数百アクセス/hみたいなアクセスが少なければ十分SQLiteでいける。
数千アクセス/sは何がいい?
Oracleじゃね? ていうか、分散させるから普通そこまでいかんと思う
数千アクセス/sを捌けるシステムは無いだろ 滅茶苦茶単純かつ小規模なテーブルへのクエリならどのDBMS(Postgre除く)でも捌けるが 実用レベルの処理なら全部で無理
Postgreって表記で使ったこと無いのがわかるw
アクセスっていうか更新が多いWebアプリでSQLiteだとすぐ辛くならないか? 並列処理が前提のWeb系でSQLiteを好き好んで使うやつの気持がまったくわからんのだが…
SQLiteは何度もガイシュツのようにファイル操作用のライブラリに過ぎないからねい。 同時アクセスに対してはOS提供のファイルロックしかやりようがないので、 性能云々言える話じゃなくなる。
iteとかMyって言うのかよw
なにこいつ
要するに、略すなら”Postgres”ってことでしょ
293 :
NAME IS NULL :2010/03/23(火) 16:06:48 ID:pSbKS93z
>>287 規模の問題。
YahooがSQLiteで構築されていたら「この人たち大丈夫だろうか?」と思っても
無理はないだろうけど、個人や中小企業のサイトならメリットがある。
特に専用のサーバーを持たずレンタルサーバーでの運用なら、バックアップが
単純で何かあってもすぐメインテナンス出来るのが良い。
よくオープンソース系の放置気味サーバーで、「データぶっ飛びました復旧の
見込みはありません」と書いたまま数年そのままというのを目にするけど、
彼らがSQLiteを採用してたらどうだっただろう?
cronで単純にバックアップしていて、次の日にはたとえ一週間分のデータが
消えたとしても残りは復旧出来ていたと思う。
こういう手軽さがSQLiteの強みだと思う。
そして、同時書き込みはそれほど発生せず、たとえ発生することによって100ms
待たされてもユーザーは思ったほど気にしないものだ。
プロセスごとにボコボコDB作って1h毎に集約すればよいのだよ
PosなんたらSQLの存在意義が分からない 遅いしできない事多いし日本以外じゃ使われてないしでほんと不思議 GPLがイヤなら素直にSQLite使えばいいやん どうせ大した事せんくせに
Firebirdも忘れないで><
FirebirdはPなんたらの五倍位普及してるでしょ
>>293 SQLite使ったってバックアップ自体しなければ意味がない。
SQLiteだって他だってバックアップ&レストアなんてほとんど手間や技術は変わらない。
何いってんのこの人
>>293 差分バックアップやらバイナリログやらは
他のDBの方がらくちんだろ
何いってんのこの人 差分バックアップなんて問題にされて無いだろ
>cronで単純にバックアップしていて、次の日にはたとえ一週間分のデータが >消えたとしても残りは復旧出来ていたと思う。 >こういう手軽さがSQLiteの強みだと思う。 ↓ >SQLite使ったってバックアップ自体しなければ意味がない。 会話になってないwww
ヒント:Lite
>>293 毎日丸ごとバックアップするのは容量がもったいなくないか?
毎日差分バックアップした方がリソースも食わないしいいんじゃないか?
手軽だし。
>>293 cronで単純にバックアップって、たとえばcpするのとpg_dumpするのとで
手間に差があるとは思えないけどなぁ。
>>293 cpでコピーするのは危険だからやめた方がいい気がする。
コピー中にアクセスされたらやばいっしょ
>>306 でも、SQLiteではdumpだろうがcpだろうがOSのファイルロックに全面依存なのは
変りないからなぁ。その辺はOSのファイルロックを信頼するしかないかと。
cpでのコピーだと、ファイルロックしないから。
昨日から会話が成立してないのはpgユーザーか 迷惑な存在だ
迷惑なのはお前一人だろ
311 :
本田 :2010/03/27(土) 00:33:56 ID:qqcAE8kL
>>293 zfsは任意の時間のファイルシステム自身のスナップショットを取れるようになっている。
バックアップ機能の貧弱なDBMSはそれ自身のバックアップ機能に頼らす、
新しいファイルシステムのバックアップ機能を使ったほうがベターかもしれない。
delete from hoge a where exists (select 1 from hoge b where a.id = b.id) が怒られるんだけどなんでじゃろ…?
>>312 delete文のテーブルにエイリアスが使えないとかじゃね?知らんけど
>>312 delete from hoge a where a.id in (select b.id from hoge b)
多分これは通ると思う。
詳細な理由は分かりません。多分、セミ結合が関係してるんでしょう。
>>313 >>314 うぎぎありがとう… 一位制約かけてCONFLICTのときREPLACEする方向でいいやにすることにしました…
これってファイルシステムもOSも無いシステム(要するにメモリのみ)でも使えるの?
メモリだけでどうやって使うの?
>>317 ファイル名を「:memory:」と指定するとインメモリDBとして動作するじゃない
じゃぁ、ファイルシステム無しでメモリヒープだけで動いてくれないかと
sqlite自体がOS上で動くソフトウェアなのにOSも無しにどうやってsqlite動かすの? ハイパーバイザー型のsqliteとか聞いたこと無いし
OSっつってもファイルシステムとmutexぐらいでしょ、使うの で、ファイルシステム使わないオプションが既にあって、 OS無しならそもそも排他制御も不要だから、コンパイルスイッチで ちょいちょいとすれば静的リンクできないかなと思って
そういえば知り合いがファイルシステム無しで動かしてたわ。 OSはitronっぽい何かを使ってるらしいのでようわからんけど FATすら高くて買えない小さいプロジェクトって言ってたな。
発言が間抜けすぎ
コンピュータというかプログラムの動作原理を理解していない人が混じっているのは 春先のせいなのか # 釣りだよね?釣りと言ってくれ
釣り以外のなにものでもないだろ
uITRONで動くならなんとかなるかな よし、ソース眺めてコンパイル頑張ってみる まぁ最近は何でもOS載ってるしね 想像できないのも無理ないさ
メモリだってOSからもらう 組み込みでこれのソース使うならそれもエミュレートした関数用意しないとね
uITRONだってOSだろ
C/C++のライブラリなんだからソースぐらい眺めてからモノ言えよとは思う OSありき前提のシステムコールをバリバリ使ってる時点でもうね…
システムコールなんて代表的なのが30個くらい マイナーなの入れてもせいぜい300程度だし 自分でOSのフリをすればなんとでもなるよ
>>326 いや、組込み屋なら自分で作ったの持ってるだろ
組込み系では簡単OSぐらいなら自分でこさえる場合もままある ちなみに仮想メモリを使わないシステムならメモリ確保にOSは関係ない 強いて言えばリンカとスタートアップルーチンとmallocのお仕事か まぁこれ以上は板違いだね
SQLiteのくせに会話が全然ライトじゃなくてついていけない
そんなに簡単なら自分でOS不要のsqlite作れば良いのに ただ316を見る限り現行のsqliteをOS無しで動かそうとしてるみたいだけど
>>332 は「簡単“な”OSぐらいなら」と書こうとしたんじゃないか、文脈から察するに。
簡単レシピっていうのは、簡単なレシピのことだよな
337 :
本田 :2010/04/01(木) 00:57:14 ID:njYnAK3+
SQLite Release 3.6.23.1 On 2010 March 30 (3.6.23.1) Changes associated with this release include the following: * Fix a bug in the offsets() function of FTS3 * Fix a missing "sync" that when omitted could lead to database corruption if a power failure or OS crash occurred just as a ROLLBACK operation was finishing.
338 :
NAME IS NULL :2010/04/02(金) 17:00:51 ID:kjEmh5Hv
MFC上でSqliteを使用しています。 UNICODEで日本語の文字列を使用した場合、どうも文字化けを起こしているようなのですが 原因を教えていただけないでしょうか? ・書き込み CString strBuf = _T("あいうえお"); sqlite3_bind_text16(xxx,1,(void*)(LPCWSTR)strBuf,-1,SQLITE_STATIC); ・読込み const void* pVal = sqlite3_column_text16( xxx, 1 ); CString strBuf = CString( (WCHAR*)pVal ); TkSQLite で見たところ書き込みの段階で文字化けしているようです。
UnicodeとUTF-8の区別はついてる?
340 :
NAME IS NULL :2010/04/07(水) 23:04:37 ID:cFdqstGp
ついてるだろな。 SQLITE_TRANSIENTでどうなるか試してみてほしいな。
WindowsMobileで使うならsqliteとsqlceのどちらがいいんだろう
その両方を査定したことのある人って少ないだろうし ム板か携帯コンテンツ板かどっかにあるだろうWM開発スレで聞いた方が、人に当たる確率高いんじゃないの
カラム数6つ、データ数4万ぐらいのDBがあります。メモリDBとして使用してます。
SELECT で4つのカラムに該当(全てINT型)するデータを取得するという処理を複数回(10万回ぐらい)します。
これと、上記のデータをリストで作成して、ループ文で回して取得する2種類の実行時間を測定してみたところ、
4倍ほどリストのループ検索の方が早かったのですが、これぐらいの単純なDBなら自作の方が早いのでしょうか?
http://www.sutosoft.com/room/archives/000482.html こういうのも実験後で見つけました。
少ないクエリで複雑な条件のものを手早く持ってくる、ほうが得意
345 :
求む勇者 :2010/04/16(金) 14:14:10 ID:C4ymkbtz
ヒマで親切な勇者求む
jqueryのflexigridを使おうとしています。
mysqlからphpでjson形式で出力してものを読んでいるようですが、これをsqlite3を使うように改造しようとしています。
が!できないんです。負け犬です・・・。
flexigrid
http://www.flexigrid.info/ 上記の Show sample PHP code for JSON にコードがあります。
教えてくれた人には50000ペリカ差し上げます。
スレ違い 失せろ
347 :
NAME IS NULL :2010/04/16(金) 20:11:30 ID:C4ymkbtz
そんなこと言わないで教えてくださいよ
スレ違い
50000ペリカっていくらだよ?
スレ違いですれ違ってるな・・・
2〜3万件のテーブルでも重くならなくて フィルタが使えて(もしくはSELECTの結果から編集可) 列の幅をテーブルごとに保存できて セルに画像表示できるsqliteのフロントエンドありませんか?
無ければ自分で作ればよろし
353 :
351 :2010/04/17(土) 14:06:58 ID:???
そうですね そのほうが早そうです
>>351 sqliteコマンドが使えるんじゃないか?
出力にフィルタもかけられるし
画像表示無理だろ
こんなもん1時間もありゃ書けるだろ 作れよ
もうすぐ一時間だけど出来た?
359 :
NAME IS NULL :2010/04/28(水) 00:29:12 ID:IcHPXx21
>357 の1時間て長いな
ずっと待ってたのかよ 暇人だなぁ
なぜこの流れで作ってもらえると勘違いできるんだろう
なぜこの流れで
>>357 が叩かれている事に気付かないんだろう
.NETでならマジに1時間で作れるが
まあこのくらいなら使い捨てでもさっくり自分で作った方がいいね
さすがに1時間は無理だが連休使えば作れるな・・・ よし、ちょっと待ってろ
いや別にいらんし
そろそろ諦めたか。DataGridViewは細かいことやろうと思うと、そこそこスキルが要求されるからな。
コントロールの継承とかオーナードローとか基本中の基本じゃないの
元の要求仕様は単純なんだからDataGridView使うことも無いわ
君はそうなのかもしれんね
おれなら53分あれば十分
マダーチンチン
>>371 なら1時間で作りきるプランを示せよ
成果物はイラネ
GTK使えば1分で出来るな。
ブラウザベースなら5分で出来るわな。 まぁ俺の5分はやる気出すまでが長いんだが。
>>377 >2〜3万件のテーブルでも重くならなくて
で無理
ページングとかの糞UIはありえないから
口だけ番長
いくらSQLiteでもたかだか3万件で重くなることはないだろ。
>>378 要はスクロールで画面遷移なしに2〜3万件のエンティティが表示されりゃいいんだろ?
ちゃんとそこまで考えて5分だぜ。
まぁ・・・IEに対応すると60分くらいは必要になるけど・・・。
まーだ誰かが作ってくれるって幻想抱いてんのかよ
Linuxなら実際5分で出来るけどな。
386 :
NAME IS NULL :2010/05/07(金) 18:35:30 ID:G5v/kBgC
> 【ADO.NET provider】 System.Data.SQLite のVS2010版はやくしろ
>>385 ※ Linux ※ って凄いなぁ・・・笑
OS なのにデーターベース機能もあるんだぁ。。
>>387 今時OSにデータベース機能があるのは当たり前だろ
MacOS XやAndroidなんかもデータベース機能(SQLite)持っているし
>>388 ごめんごめん。
俺てっきり Linux には DB が組み込まれてるんだと思ったわ。
なるほどねぇ。そういうレベルの話かぁ。
俺のWindows98SEもデータベース機能持ってるぜ?sqlite.dllダウンロードしたからな
組み込まれてるだろ Androidだってそうだ
揚げ足取りでごめんな。 「Linux ならできるぜっ」って言い回しに反応してしまった。(性格がちっちゃいので) 「(おれば)Sqlite3 で5分でできる」ってならなんともおもわなかったんだけどさ。 というのもLinux といえば Kernel 2.6.xxとかの部分を指すんじゃないかいな? 実際は PC-Linux, Vine, Ubuntu, CentOS, Fedra, Android,...etc... の形になるからそんな尺治定規な事いうなよっ・・・って言われるとそれまでだが、喧嘩ウルキはさらさら無いので誤解しないでくだされ。
カーネルだけインストールして「Linux入れた」って人は最近じゃ珍しい希少な硬派。
ま、そなんだけど、ディストリビュータで使い勝手や構成も変わってくるから Linux というより Fedra 10 だけどとか、Kubuntu なんだがって方がしっくり来る。 Linux といってもどれやねんって Linux 使いは思わないのかな。 中には Android よろしく Embedded Linux ってやつもいるだろ?
Fedra .. Fedora うーん、なんでこんなタイプミスを。 フィドーラな Linux 使いに怒られるわ。
別にtypoはどうでも良いけど
>>395 にイラっときた
うっ、 かな書きのところか、言い回しか? 後者ならしかたないな。 昨年 Fedora をちょっといじってたとき「はて、これってどう発音するんだろ?」と語学に弱い私のオツムを刺激。 フェドラ?かなと思い、気になって調べてみたらフィドーラが表現的に一番近いのかな。 しかし SQlite 3 は iPhone でも動くし空気みたいな存在だねぇ。
typoってなに?チンポ?
SQLiteはオープンソースなんだから、iPhoneで使ったらダメだろ。 使いたいならiPhoneも無料にしろ。
入れないと金魚が死んじゃうよ
ここでの質問が不適切であれば、対応するスレッドをお教えください。 質問事項 たとえば以下のような3つのテーブルがあるとします。 person_name_table (人の名前のテーブル) PID PNAME 1 麻生 2 海部 3 鳩山 attr_name_table (人の属性のテーブル) AID ANAME 1 自○党 2 民○党 3 漫画好き 4 指導力疑問 person_attrname_table (人(ID)と属性(名前)の組のテーブル) PID ANAME 1 自○党 1 漫画好き 2 自○党 3 民○党 3 指導力疑問 このとき、人(ID)と属性(ID)のテーブル「person_attr_table」を新たに 作ろうとしたときはどのようなコマンドを用いればよいでしょうか。 感覚的には person_attrname_tableのANAME列をAID列に置換できれば よいと思っていくつか試してみたのですが、うまくいかず。 (そもそもこのような操作をsqliteでやることが間違いでしょうか?) よろしくお願いします。
>>403 「insert 〜 select 〜」を調べてこい
新規で作るなら、 create table 〜 as select〜か....
態々政治ネタで例を作る奴は何なの?何の意図があるの?
408 :
403 :2010/05/12(水) 06:44:23 ID:???
>>404-407 相手をしていただいてありがとうございました。
こちらで自己解決しました。
insert/select/joinを使って実現できました。
特に、joinの存在に後から気づきました。
以上、ご報告でした。
政党と趣味嗜好と能力を同じ属性テーブルに入れるのには抵抗がある
sqlite3_finalize()を実行すべき条件がよくわからん とくにエラー発生時にclose()したいときとか
ヘルプおながいします。 掲示板プログラムで、スレッド番号10に各IDが何個書き込みをしているかを調べるために、 $thread = 10; $sth = $hDB->prepare("SELECT id,COUNT(*) FROM テーブル名 where thread = ? GROUP BY id"); $sth->execute($thread); while( my($id,$cnt) = $sth->fetchrow_array ) { print "$id $cnt\n"; } とやったのですが、全く表示されません。 PupSQLite(v1.9.0.2) でSQLを実行する(where節の ? の部分は10を入れて実行)と意図通り id cnt ----- 1 5 2 3 3 9 などと表示されます。 上の perl はどこが間違っているのでしょーか?SQLiteは3.6.22です。
↑すみません もうちょっと自分で確認してから質問します...
すいません。教えてください。 xampp+sqlite3+PHPで施設の予約をするプログラムを作っています。 club date jikan yakyu 2010-05-01 AM handball 2010-05-01 PM yakyu 2010-05-02 AM rikujo 2010-05-02 PM rikujo 2010-05-03 AM handball 2010-05-04 PM のようなテーブルがあります。 01 02 03 04 05..... yakyu AM AM handball PM PM rikujo AM AM それを上記のようなカレンダーの形で出力したいのです。 select jikan as '01' from yotei where date='2010-05-01' UNION select jikan as '02' from yotei where date='2010-05-02' ...... group by club; としてみたのですがうまくいきません。 MYSQLの本を見て case..when..then..else とかを試してみたのですが、やはりうまくいきません。 こういう場合はどのように考えたら良いのでしょうか。
日付とAM/PM の表に使用者を入れるような DB にすればいいんじゃない? って、別の提案したらだめか。
SELECT DISTINCT y1.club, (SELECT jikan FROM yotei y2 WHERE date_ = '2010-05-01' AND y2.club = y1.club) AS "01", (SELECT jikan FROM yotei y2 WHERE date_ = '2010-05-02' AND y2.club = y1.club) AS "02", (SELECT jikan FROM yotei y2 WHERE date_ = '2010-05-03' AND y2.club = y1.club) AS "03", (SELECT jikan FROM yotei y2 WHERE date_ = '2010-05-04' AND y2.club = y1.club) AS "04" FROM yotei y1
>>414 PHP 側で整形したほうがいいよ。
そもそも、同じ人が同一日の AM/PM 両方に予約したらどう表示するんだ?
>>417 > そもそも、同じ人が同一日の AM/PM 両方に予約したらどう表示するんだ?
それ以前に、施設予約が目的なのに、同一日時予約に対する排他制御がなさそうな
テーブル構造がとっても気になった。
野球とハンドボールと陸上は仲良く共用できるのか?
合同練習だろ
>>418 排他をどこでやるか (そもそもやるべきか) は、別の問題だと思うが。
予約だけばんばんさせといて、抽選で使える奴を決めるとかのシステムかも
知れんし。
このSQLiteのver2.x系列のって、javaで使うことって出来ないんでしょうか?
422 :
NAME IS NULL :2010/07/05(月) 10:38:56 ID:JbkhIGME
手軽さに惹かれてSQLite使おうとしてるんですが、 数十ギガのデータベースファイルでも問題なく動作するでしょうか? もっと大きくなる可能性もあって、スケールへの態勢を心配しています。
数10GiBのデータを扱うのに手軽さでSQLiteを選ぶとは・・・ただでかいだけのデータなの?
そういやそうだなw
426 :
NAME IS NULL :2010/07/05(月) 15:10:15 ID:pwlENpuN
>>423 ありがとうございます。大丈夫ですか。
とりあえず使ってみます。
>>424 サイズが大きくなっても大丈夫でパフォーマンスもでるなら手軽なのが一番ですよー
バックアップとかも楽でいいです。
単に他を知らなくて勉強する気も無いだけだろ 単一のファイルでその大きさだとかえってバックアップ面倒だし
10GiB超って何のデータなのかな? イメージなんかだったら場所と名前をDBで管理した方がよさそうだし, テキストデータだったらSQLiteじゃ荷が重そうだし.
SQLiteってデータがオンメモリにあることを前提でチューニングされていそうだけど、 数10GBでI/Oが出る状態でも大丈夫なんだろうか? 誰か試した人いる?
やっぱどんなにおっきくても100M単位ぐらいじゃyないのか?
数十GBは試したことないが10GBぐらいのメールサーバのログ集計になら使ったことある。 問題なく動いたよ。 ただ、INDEX作ってある状態でINSERTするとみるみる遅くなっていって使い物にならなかった。 INDEXない状態でINSERTし終わってからINDEX作成なら何とかなったんだけど、最後のCREATE INDEXに相当待った。 うろ覚えだけどINSERTに3時間、CREATE INDEXに12時間とかそういうオーダー。 ひとたびINDEXができてしまえばその後のSELECTは快適そのものだったな。
>>431 と同じくログ集計で20GBくらいなら使ったことあるな…
手順は同じで INSERT 終ってから CREATE INDEX の順でやったけど
うちでは INSERT で14時間、CREATE INDEX で4時間とかだった。
まぁ使ってるマシンやテーブル構成が違うんだろうけど…
あとやっぱりSELECT自体は普通に使える速度だった。
数十ギガになった時はやっぱりMySQLやPostgreSQLの方が良いんですかね?
暗号化しようかなと思ってSQLCipherを使ってみたんだけど使った事ある人いる? ReadMeにあるとおりPRAGMA key = 'passphrase';を入れてみてもLitaから丸見えなんだが。
連投すいません。 phpのSQlite3のコンストラクタにもオプションでencryption_keyってのがあるけどこれって意味無し? これも同じように設定しても丸見えなんだが。
436 :
431 :2010/07/06(火) 13:26:12 ID:???
>>433 ケースバイケース。
一概には言えない。
ちなみに
>>431 と同じ処理を当時(4年くらい前)MySQLやPostgresでも試してみたけど、INSERTはSQLiteの方が断然速かった。
CREATE INDEXはSQLiteの方が断然遅かった。
いずれも詳しい数値は忘れたけど、時間を総合するとどれでも大差ない結果になった希ガス。
だから自分が慣れてる方法でやればいいと思う。
じゃあだいじょいぶかな。 100GB超える可能性もあるんだ。
みんな凄いね。そんなにでかくなるもんですか...
ファイルでもっときゃいいようなデータもすべて入れてくれという案件もある。 jpegのデータをBLOBでつっこむとか。 こりゃどういうことだとクライアントに問い合わせたけどとにかくそうしてくれの一点張り。
巨大なデータだと、たとえ性能は満足できたとしても、バックアップでハマらないか? 更新可能なままでバックアップはできないよね?
441 :
NAME IS NULL :2010/07/07(水) 10:54:20 ID:eywZHyww
Insertもインデックスはってからだと劇的に速くなる事あるよ。 ファイル一つしかないんだからバックアップは簡単でしょ。
>>440 以前絶賛INSERT中にDBファイルコバックアップしたら破損して開けないものが取れた。
いかにSQLiteといえど更新しながらは無理だね。
更新しながらバックアップ取るならファイルコピーではなくSQLでexportということになるが、
場合によってはロックかかって更新側がかなり待たされることになるかもな。
それでもなお完全性を重視するならBLOB使うのも仕方ないな。
>>441 並行して更新かけてるプロセスがなければ簡単だけど今しているのはそういう話じゃない。
インデックスない方が速いINSERTって例えば?
>>441 INSERTとUPDATE混同してるだろ
1ファイルに複数テーブル(10個とか20個程度)を作成すると、 パフォーマンス落ちたりしますか?
でかいファイル一つだとFAT32のフラッシュメモリに入れようとしてはまるw
数10GB超えの話してるんだろが
exFATってどうなんだろ SQLiteと相性いいのかな
452 :
NAME IS NULL :2010/07/24(土) 18:48:12 ID:mVHGZySD
>>433 そういう事言ってる時点であんたには無理な希ガス
453 :
本田 :2010/07/27(火) 07:45:17 ID:hj0bTvlh
SQLite Release 3.7.0 On 2010 July 22 (3.7.0) Changes associated with this release include the following: * Added support for write-ahead logging. * Query planner enhancement - automatic transient indices are created when doing so reduces the estimated query time. * Query planner enhancement - the ORDER BY becomes a no-op if the query also contains a GROUP BY clause that forces the correct output order. * Add the SQLITE_DBSTATUS_CACHE_USED verb for sqlite3_db_status(). * The logical database size is now stored in the database header so that bytes can be appended to the end of the database file without corrupting it and so that SQLite will work correctly on systems that lack support for ftruncate().
WALどのくらい効果あるのかね。
SQLiteって特に何もしてないけど排他処理ってできてるんですかね?
phpMyAdmin みたいなブラウザ経由で .sqlite をいじくれるソフトってありますか?
459 :
NAME IS NULL :2010/08/04(水) 11:44:49 ID:KumWqsGz
インターネットVPNを使用してSQLiteへのアクセス速度を 改善させるなんか良い方法ないですかね?
今はどうなってんの? VPNのせいで遅くなってるなら回線工夫したら?
461 :
sage :2010/08/04(水) 13:30:14 ID:KumWqsGz
現状は2拠点でのVPNです。 ローカルからのSQLiteへのアクセスは大丈夫ですが VPN越しのアクセスが異常に遅くなってしまいます。 VPN越しでのエクスプローラでのファイル操作に関しては 速度的には問題ありません。 SELECT、UPDATE、INSERT全てがVPNを通すと遅くなってしまいます。 これは宿命なのでしょうか・・
PING値とかどう? 遅いのレベルにもよるけど、名前解決は問題ない?
CIFSなら一回ローカルにコピーした方が良いんじゃないか?排他制御は他の方法で。
create table users ( id integer, name text ); create table books ( id integer, user_id integer, title text ); 上のような二つのテーブルがあります。 (booksテーブルがusersテーブルを参照しています) 今users.nameとbooks.titleが分かっていて、上2つのテーブルにデータを格納したいのですが、 スマートな方法が思いつきません。 思いつく限りでは以下のようなやり方になってしまうのですが、もっと良い方法は無いでしょうか。 insert into users (id, name) values (3, 'aka'); としてusersにデータ投入。 select id from users order by id desc limit 1; として今入れたデータのidを取得。 insert into books (id, user_id, title) values (10, 3, 'sqliteの本'); としてbooksにデータ投入。 2番目のsqlが気持ち悪いです。。
>>466 2番目のSQL必要なの?ユーザIDは最初から(例の場合は3)分かっているみたいだけど。
468 :
466 :2010/08/06(金) 12:09:20 ID:???
>>467 ごめんなさい。間違ったsqlを書いてしまいました。
usersもbooksもidはautoincrement指定しているので、実際は以下のような流れになります。
insert into users(name) values ('aka');
select id from users order by id desc limit 1;
insert into books (user_id, title) values(3, 'sqliteの本');
>>466 ,468
多分これだろ。最後のautoincrementを取得。
select last_insert_rowid()
470 :
466 :2010/08/06(金) 13:58:26 ID:???
>>469 ありがとうございます!
目的がはっきりして分かり易いですね。
last_insert_rowid()を使うことにします。
471 :
NAME IS NULL :2010/08/22(日) 15:43:03 ID:mevauAk8
SQLiteのデータファイルについてプラットフォーム間での互換性は あるのでしょうか?つまりあるシステムで使っていたSQLiteの データファイルを別のプラットフォーム(CPUもOSも異なる)に 持って行って、そのまま使えるものなのでしょうか?
使えます。 それがSQLiteの特長の一つです。
473 :
NAME IS NULL :2010/08/22(日) 20:44:33 ID:iwDN+K5x
>>472 有り難うございました。また、確認もしました。
以前エンディアンの違いなどで悩まされたことがあったので
疑心暗鬼になっていました。
読み込み専用モードで複数のクライアントから同時アクセスなんてできないのですか?
>>474 SQLliteの排他制御がうんこだから。
マジに使いたいときは自前で排他してください。
>>474 そういうことをやりたい場合は素直にDBMS使うべき。
SQLiteはあくまでアプリケーションの組み込み用のファイル操作ライブラリ。
>>476 だから、SQLiteは複数のプロセスがひとつのファイルを触ることをほとんど
想定していないってことだよ。単純にSQLiteライブラリがDBファイルに
アクセスする際は、他のプロセスが触れないようにロックかけるだけ。
何度も書くけど、まともに複数のプロセスからDBをいじりたいのなら、
きちんとしたDBMS使うべき。
横からだけど SQLITEにもファイルロックと同程度の排他制御はあるでしょ?
>>479 排他制御は出来るけど、非ブロッキング以外はバグってるので
ブロックさせたかったら自力
>>479 だから、SQLiteはトランザクション開始するだけでDBファイル自体にロックがかかるんだよ。
なので同時に複数のプロセスから触ること自体が不可能。
横から入る云々はどうでもいいけど、ちったぁ考えてレス読めよ…
わからんけどありがとう
2プロセスで1つのDB共有してて、どう見ても同時にアクセスしてなくてトランザクションもかけてないのに 「ロックされててビジーだよ」ってエラーが発生してしまう症状に悩まされてる。 Windowsだからだろうか…。
>>481 ユーザとしては、ロック時にブロックしてくれれば
リトライだの考えなくてもそのまま使えるんだけどね
SQLite.NETの話だけど、分離レベルがReadCommittedなら読み出し中に別スレッドから書き込みできた。 別プロセスからはどうか誰か知らない? とりあえず、OSでファイルをコピーしてるときに書き込むことはできない。 小さいファイルなら分からないかもしれんが。LVMスナップショットとかボリュームシャドウコピーとか使ってる。
サーバーでphpでSQLite使ってるのですが アクセスするたびに所有者がnobodyに変わって権限エラーがでてしまいます。 どうすればいいのでしょうか
すみません。サーバー管理者から凍結されてただけでした
つgoogle 「php sqlite 権限」
無料サーバーでアカ凍結でした。ごめんなさい
時間差から単に見てなかっただけだろう
?
Error: database is locked
495 :
NAME IS NULL :2010/09/10(金) 16:43:37 ID:H8Xl4MIZ
ありがとうございます。 新しい奴にのみ実装されているみたいですね。残念 no such function: group_concat
TkSQLite が使いづらいんですが他にGUIツールないですかね。
それが一番いいと思うけどなぁ。
>>498 FirefoxからSQLite Manager使うのはどう?
SQLiteStudio は?
SQLiteCCは?
SQLite Managerってなんの為に存在してるの なぜブラウザからSQLiteなんだ!?
おれはSQLSpy使ってるよ。 ときどきRupSQLite使う。
>>505 SELECTかけて出てきたレコードを直接編集できるとうれしい
row_idを使えば可能なはず
PupSQLiteがなかなか
cmd.exeさいきょー
そういえばcommand.comってまだ存在するんだな
64bit環境だとない
PC-98で使えるの?
なぜ使えないと思うのか。
動くだろ
どっちやねん
create domain って無いんですか?
521 :
NAME IS NULL :2010/10/18(月) 22:48:54 ID:MRSTfJoF
522 :
NAME IS NULL :2010/10/18(月) 22:53:30 ID:MRSTfJoF
c++のテンプレートをtypedefで別名をつくるみたいに 制約を付けた型のアライアスらしい>ドメイン
525 :
524 :2010/10/19(火) 20:35:13 ID:???
アライアスってなんだよ・・・一度間違って覚えると修正がきかないお
エイリアスのことをアライアスって呼ぶ人時々いるけどどこ発祥の文化なのかな
無限のアライアス
>>526 alias と allience を混同したんだろう
フランス語読みなら「ありゃ〜す」
絵入明日?
531 :
NAME IS NULL :2010/10/22(金) 14:30:33 ID:XUVI2xy3
phpのsqlite_openでdbが読み込まれない(生成されない)んですけど、ありがちな原因を教えていただけないでしょうか? phpのverは PHP Version 5.1.6です。sqliteも同梱されてたやつで動かしてます。
マルチポスト乙
バグ
534 :
NAME IS NULL :2010/10/22(金) 17:04:30 ID:XUVI2xy3
マルチ申し訳ない。それっぽい質問スレッドがなかったから書き込まさせていただきました。
アクセス権 ファイルパスのエンコーディング
>>531 =534 みたいなやつって、マルチでもきらわれるにもかかわらず
>>535 みたいに親切なカキコがあったとしても
フィードバックなしで消えっぱなしだから
さらに性質が悪いよな
VS2010でマトモに動かんのはいつになったら直るんだ
君が直すまで
system.data.sqliteでマルチスレッドとかNG?
排他制御がかちあうのでマルチスレッドの意味は薄い
行ロックの効く組み込みDBってない? sqlservercompact?
>>541 行ごとにテーブルをわけるという基地外システムなら作ったことがある。
いやほんと頭おかしいと思ったわ
後のNoSqlAndKvsであった
それってSQLすらいみなくない
テーブルとマスタでファイルを分けるとパフォーマンス上がるかね?
よく知らずに少人数DBとして利用してみたら、あまりにも使えないので SQL Compactに乗り換えることにした さよならお前ら
SQLiteはおひとり様DB
SQL Server Compactは複数同時使用可能なの?
うちは会員数約3000人で1日の利用者が約300人の 会員制のサイトだけど、SQLiteで問題無く運用できてるよ。 "少人数"て、どれ位までが"少人数"なの?
DB/テーブル設計さえしっかりしてればsqliteで大規模サイトもOKよん
いちお〜VCでデータ変換アプリみたいの作って納品した実績は あるんだけど、 今更 基本的な質問だけどw 結局あれってライブラリじゃん。 そん中でロックかけてるの? ・・・ まぁそれしかないわな。(自問自答モード) 要求受付の複数のスレッドがリクエスト受けてもライブラリが スレッドセーフなので、問題なくトランザクションは隔離されると。 複数の別個のアプリが同じDBを同時にオープン出来ないだろうし(未テスト) 結局 遅いだけなんでしょ。ちゃう?
公式サイトに全部書いてあるから読んでこい
未テストって SQLite 関係なくテストはしろよ
>>553 昔テストしたときは共有ロックは出来るが排他ロックが出来ない
というバグがあったので、しかたないから自分で排他制御した。
大量データを挿入するときにトランザクション使わないと 超絶遅くなるっていうバグ直った?
>>557 大量データを挿入するときにトランザクションを使うと
超絶速くなるのが仕様です(キリッ
COMIITを最後にしなきゃだめよ
魔法少女☆こみっとchan
1. サーバにSQLiteファイルAをアップロード 2. ローカルでSQLiteファイルAを更新(INSERTでレコード追加) この時、SQLiteファイルAはリジュームアップロード可能でしょうか? それとも一からアップロードし直すことになるのでしょうか? よろしくお願いします。
>>563 >この時、SQLiteファイルAはリジュームアップロード可能でしょうか?
_
リジュムアプロドの意味がわからんなぁ。
>>564 無理ですか 残念です
SQLをサーバ側でも実行するしかないかなぁ
>>565 サーバにあるファイルを、「途中までアップロードしたファイル」と見なして、
残りの部分(追記部分)のみ送信する という意味です
まあ rsync なら近いことができるかもしれんが
rsyncは結局フルコピーでしょ。 バイナリ差分作って同期させるとか。
zenkai upload sita data ga local ni areba itiou kanou .dump -> diff -> upload upload -> .read #nihongo utenai kankyou de suman m(__)m
>>563 自分で発行したSQL記録して後でまとめて投げて鯖側でも実行するとか
差分でやった方が確実かと
これってファイル共有だけなの? サーバーコンポーネントみたいなのないの?
ありません
終了
ファイルいっこ〜
イーガーコーテー
鯖にしたいんならpgsqlかmysqlにしろ。 sqliteは個人用として使う で十分。 管理も楽。 でしょ
>>579 そんな当たり前のことを得意満面に書いてお茶を濁してないで、
早く作ってください神様
なんでサーバを作るねん
鯖にしたいんならしめ鯖にしろって おととい、すし屋で言われた。 おいしかった。
それもこれもsqliteのトランザクション制御がうんこなのが悪い
かっぱ寿司では〆鯖が好きです
>>583 トランザクションはうんこではないでしょ。排他制御はうんこだけど、
そもそもがアプリ組み込み用ファイルアクセスライブラリなんだから、
べつにこれでもかまわないんだし。
複数スレッドからつつき回したらDBLocked出まくりワロタ
排他制御はPHPでやれば十分
>>585 ごめん、間違えてた。
トランザクション制御はうんこじゃないです。
排他制御がびっくりするほどうんこです。
>>586 そりゃアプリの設計が悪いでそ。複数のスレッドで同時にファイルを
触りに行くべきではない罠。
びっくりするほどユートピア
複数コネクションでの排他制御をさばききるSQLiteインプロセスDBサーバーを
>>577 神様が開発中です
期待して待ちましょ−!
>>593 昔作ったわ。排他制御がウンコだったので
「接続するのひとりにすればよくね?」
と思ってMySQLコンパチ風味で作ってたけど
上からMySQL使っていい許可が降りたので
サーバ側は作成放棄して乗り換えた。
1プロセス内の複数スレッドからの呼び出しは上手いことシリアル化してほしいよなぁ 個々のスレッドからの処理呼び出しでDBLockするんじゃなくて。
>>595 とりあえず、ファイル操作専用のスレッドを作っておいて、
他のスレッドからはそれを呼び出すようにするのが基本かと。
それだとスケールしないやんという話もあるけど、スケーラビリティが
重要ならそれこそ本格的なDBMSの出番なわけだし。
ホイチョイのDBもどきなんだから それなりの使いこなしが必要だよ。
ファイル一個なんだから複数アクセスにはセマフォとかクリティカルセクション で整流するしかないだろね。
>>598 セマフォでいいのなら、単純にSQLite任せにしてもいいんじゃない?
セマフォであらかじめDBLockが出ないようにするのかと、SQLite任せにして
各スレッドでDBLock時の例外処理をするのかの違いしかないでそ。
>>599 よくわからんが兎に角
ライブラリがスレッドセーフになってないんでしょ。
あれ なってるっけ?忘れた。
sqlite_openしてからforkすんなってことか これはきっついな
>>602 それは3.3.1以前の話って書いてあるやん。
3.3.1以降ではFAQにも制限が緩くなったよんとある。
ってことで、上の層でセマフォを使う必要はない。けど、リクエストの
シリアライズなんかは当然やらないので、DB Lockが問題になるようなら
複数のスレッドが個々にSQL発行するような設計を改めないといけなくなる。
>>601 とん
Threads are evil. か。
了解しましたw
スレッド毎にopenした場合は大丈夫。スレッドでDBハンドルを共有したらアウト。だったような。
この手のツールはSQLiteSpyで間に合ってるな。
だな。
俺なんか tksqlite.exe で十分だぞ。 え?ちがう?
610 :
NAME IS NULL :2010/12/07(火) 23:01:26 ID:Ko0FUGgE
611 :
NAME IS NULL :2010/12/09(木) 11:48:33 ID:wwGdUmpr
きたせんじゅ
どんも はじめまして。 SQLiteはひとつのファイルにわんさかデータを放り込むと聞いたのですが、 windows7とかで動かした場合、ファイルシステムがNTFSだから 必然的にデータベースの最大サイズもNTFSのファイルサイズに準拠する形に なるという認識でよいでしょうか? たしか2TBがNTFSの最大値だからそんなに2TBをオーバーすることは無いとは思いますが、 しっかり認識しておかないとまずいですよね・・・・。
よい
614 :
612 :2010/12/11(土) 17:34:10 ID:???
>>613 あざーす!
今度AIRアプリの中で使おうと思ってたので
参考にさせていただきます!
単なるファイルとライブラリだけですからね。 まぁよく出来たライブラリという事で。
616 :
本田 :2010/12/13(月) 00:20:36 ID:nXBl2G9X
About SQLite
http://www.sqlite.org/about.html SQLite is a in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.
The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private.
SQLite is currently found in more applications than we can count,
including several high-profile projects.
617 :
本田 :2010/12/13(月) 00:22:16 ID:nXBl2G9X
SQLite Release 3.7.4 On 2010 December 08 (3.7.4) Changes associated with this release include the following: * Added the sqlite3_blob_reopen() interface to allow an existing sqlite3_blob object to be rebound to a new row. * Use the new sqlite3_blob_reopen() interface to improve the performance of FTS. * VFSes that do not support shared memory are allowed to access WAL databases if PRAGMA locking_mode is set to EXCLUSIVE. * Enhancements to EXPLAIN QUERY PLAN. * Added the sqlite3_stmt_readonly() interface. * Added PRAGMA checkpoint_fullfsync. * Added the SQLITE_FCNTL_FILE_POINTER option to sqlite3_file_control(). * Added support for FTS4 and enhancements to the FTS matchinfo() function. * Added the test_superlock.c module which provides example code for obtaining an exclusive lock to a rollback or WAL database. * Added the test_multiplex.c module which provides an example VFS that provides multiplexing (sharding) of a DB, splitting it over multiple files of fixed size. * A very obscure bug associated with the or optimization was fixed.
重くなるなよ。遅くなるなよ。 Pls keep it light and fast.
621 :
612 :2010/12/13(月) 11:45:38 ID:???
>>619 すみません。NTFSのは最大ファイルサイズは
2TBではないようでした。
ウィキペディアを見たら16 TiBと記載されてました。
実際にシステムで動作するときは
他の要因によって最大サイズが変化するようですね。
お騒がせいたしました。
えすきゅーえるらいと
えすきゅーえるいて
エスキュリテ
625 :
NAME IS NULL :2010/12/28(火) 10:16:52 ID:s2YjBZl6
スクライトって発音してるひとがおりました
しーくらいと
スクライ〜ト〜♪ そんな飲み物もありました
エスキューライト
801 名前:NAME IS NULL[sage] 投稿日:2006/06/18(日) 08:53:32 ID:???
SQLite = スキュライト
805 名前:NAME IS NULL[sage] 投稿日:2006/06/18(日) 13:23:15 ID:???
>>801 それが正しいと思うよ。
内部解析アルゴリズムがLemonになってたからスプライトレモンにかけてるんでしょ。
俺はずっとそう言ってる。
スキュライ〜ト〜♪
リスクやマイナスが起爆剤になるデータベース
>>635 英語わからないある
>>636 I don't understand its mean well..
639 :
NAME IS NULL :2011/01/05(水) 03:16:23 ID:nUqOcAEq
I cannot speak English.
遅い、遅すぎます。
シングルスレッドなら当然最速
dbファイルってsqlite3 と2で共通なのでしょうか?
ホーマットが違うのでわ?
>>640 どうせドキュメントも読まずにろくでもないインデックスを張ってるか、
ろくでもないクエリーを書いてるんだろ
フィアーバード最高!
カラムの削除できなかったの直った?
こんな本いらないだろ
もう狩ちゃったよ。中身見てないけど。
感想よろね。 いちおショッピンカートには入れてる。
>>651 ごめん、パラパラ見たけどSQLite自体詳しくないから細かいところ突っ込めない。
普段awkで面倒なのをSQLiteにimportして使っている程度なので。
逆引きっぽく、あーこんな事もできるんだ程度には確認はできた。
他のSQLite本より余計な部分をそぎ落とした上で細かい部分を詰め込んでる感じか。
SQLiteって公式サイトに全部情報あるじゃない 書籍なんていらないでしょう?
>>653 それも持ってるけど、結局SQLite自体詳しk(ry
SQL自体の初心者向け。
あと、他言語からの使い方や簡単なWebアプリ制作が記載されてる。
たぶん、ある程度わかっている人間には無用。
俺はCサンプルがあればそれでいいや。 C+sqliteは速いど〜。 ほんと可愛いライブラリだよね。
てか、おまえらどうせ INSERT,SELECT,UPDATE,DELETE しかつかわないでしょ?
それ以外になんかあるのか
PRAGMA
CREATE?
CRUDができればそれでいいよ
そんなもの役に立たない
他のRDBを使っていちおう仕事してるやつ用のSQLite本ってないのかな? できれば、ちょっと本体改造みたいな話が載っているとうれしい。
ソース嫁 Cが分かるなら全然難しくない
Cのファイル一個だけなのよね。 大したもんです。
コンパイラの最適化はファイルが分散したら効率わるくねぇ?だったら一つにまとめちまおうぜ! という素敵な経緯がある
ファイルサイズ4MBオーバーとか見たくねーよ
>>669 あ そすか。
俺も分割コンパイルよりも出来るだけまとめた方が楽だな。
gccだとコンパイルなんて1秒で終わるもんね。
g++だとちょとかかるか。
>>670 全部 一個の関数じゃないよ。
search使えばサクサクよ。
4Mなんて今時大した事ない。
>4Mなんて今時大した事ない。 え?
仕事で使ってる奴が今時ソースなんか読みふけってたら 給料泥棒扱いされるだろうな 最近じゃ案件なくて会社待機している人が多いみたいだが…
会社待機羨ましいです
社内失業させてまで人材確保しておかず、本当に失業させる流れに なっているからなぁ。会社に拘束されないぶんマシとも言えるけど、 このご時世では35歳以上の正社員への就職は極めて困難なのが痛いところ。
それで飛び込み自殺したりして迷惑かけるんだから、国は死ぬ権利を法制化して 安楽死設備を作るべきだよね。 死ぬ方からしても他に迷惑掛けずに死ねるし、その他大勢も巻き込まれ被害を被ら ずに済む。まさにWin-Winじゃないか。
※ここはSQLiteスレ
バグ探ししてもわからず、設定なのかなぁ〜と… すみません。。ちょっと弱音を吐きたかったんです。
?
結構昔に頂いたphp勉強のプリントを復習しながら、メニューから選んで検索するというものをSQLiteで作っているのですが select文 where句でつまずいています。 別の作ったページでorder by 句でデータベースからの読み出して掲示板のように表示するのは出来るのですが、わからないです。 apacheでバグの表示はないのと、いくらバグ探ししてもわからず、これはphpの設定なのかなと考えていて 今はPHP 5.2.5 sqlite2なのでバージョンアップさせるためにインストールし直そうかなと考えたりしています。 解りにくいと思いますが、私には基礎が抜けていてすみません。
> できるのですが、わからないです。 何がわからないのか判らんw
日本人じゃないのか?
出来るところと出来なくなった所を切り分ける事
>>680 「勉強のプリント」に何とも言えない懐かしさを覚えた。
頑張れ
最近は小学校でPHPの勉強のプリントが配布されるのか
ガリ版っぽい
>>680 本人は質問してるつもりで書いたのかもしれないが、ただの日記になってるよ…
>>680 のカキコ内で質問として意味のあるのは「select文 where句でつまずいています」という箇所だけだねw
これじゃ日記と言われてもしかたがない。多分、実生活でも苦労が絶えないお人なんだと思う。
その「つまずき」の内容を具体的に説明できれば、期待しているレスがもらえると思うんだけどなあ....
2chにはお人好しな「教えたがり屋さん」は一杯いるんだから
確かに、すみません。データベースから条件を満たすレコードを読み出して表示する。 というものをプリントに合わせて作っているのですが、 条件を満たすレコードが導き出せない状態なのです。 <?PHP 略〜 function display_search_works($works_name){ $works_select=array("","","","","",""); $dbh=@sqlite_open('d_message.sqlite'); if($dbh !=FALSE){ $sqlstr="select*from d_message where works1 ='".$works_name."'or"; $sqlstr=$sqlstr."works2='".$works_name."'or"; $sqlstr=$sqlstr."works3='".$works_name."'or"; $sqlstr=$sqlstr."works4='".$works_name."'or"; $sqlstr=$sqlstr."works5='".$works_name."'or"; $sqlstr=$sqlstr."works6='".$works_name."'limit 20"; //printf($sqlstr); $result=@sqlite_query($dbh,$sqlstr); if($result!=FALSE){ $record_n=0; while($rec=sqlite_fetch_array($result,SQLITE_ASSOC)){ $record_n++; 〜略 display_search_works($works_list[$i]); } ?> //printf($sqlstr);の//を外して結果を確認したところフォームから条件は送信できています。 データベースには接続できているのですが実際の表示ではエラーの表示もなく真っ白な状態で帰って来ます。 $record_n=0;の変数が実効できていないのかなとそれぞれの言語の意味を調べながら、 やはり私のタイプミスがどこかに隠れているのかなと頑張って探してみます!
while の中身の2行目以降が省略されているのでわからんわ。 とりあえず $record_n++ の次の行あたりで適当な文字列 print してみてちゃんと while の中身が実行されてるかどうか確認してみれば? あと $dbh や $result が FALSE だった場合の処理はちゃんと書いてあるんだろうね。
あと
>>689 のコードSQLインジェクションあるからプレースホルダ使った方がいいだろうな。
まあ今うまく動いてない原因とは関係ないけど。
>>689 >//printf($sqlstr);
これ有効にしてSQLだけで実行して結果が返ってればPHP側でここじゃない、SQL実行でエラーならSQL
ってか select*from d_message これって通る?俺はスペース入れてしか書かないからわからんけど
693 :
NAME IS NULL :2011/01/23(日) 07:03:07 ID:wVlnlX26
select*from select * from こりゃあかん
さらにその直後もあやしいね $sqlstr= (中略) "'or"; $sqlstr= (中略) "' or "; $sqlstr=$sqlstr."works2='".$works_name."'or"; $sqlstr=$sqlstr." works2='".$works_name."' or ";
printf($sqlstr) で出力される内容をそのまま TkSQLite とかで実行してみるんだな。 それが通らない限り PHP でもまともに動くわけがない。
目頭に熱いものが込み上げて来ました。嬉しいです、皆様ありがとうございます。
>>694 私のタイプミスでした。空白スペースを加えたところ動きました。
これは僕一人では見つけられなかったです。
-ーー ,,_
r'" `ヽ,__
\ ∩/ ̄ ̄ ヽつ
ノ ̄\ /"ヽ/ " ノ ヽi
| \_)\ .\ > < |\
\ ~ ) \ .\_ ( _●_)\_つ ありがとう。
 ̄ \_つ
>>693 ドリームウェーバーを使ってですとselect*fromでも通りましたが
教えて頂いたTkSQLiteでも試したところselect * fromで通りましたので
ほかのソフト使う時は空白を注意して入れてみます。ありがとうです!
698 :
NAME IS NULL :2011/01/24(月) 00:20:12 ID:oiHYSamW
言うなればシガニーといったところか
>>698 1月の2chのレスで一番役に立つ情報だ
701 :
NAME IS NULL :2011/01/27(木) 01:36:41 ID:INcQ21g4
今時、DB丸ごとロックとか、酷い代物だな…。
テーブルごとにDB作ればいいだろ
スタンドアロンDBですから、それなりに楽しく使えばいいかと。 でもスレッドセーフだし、十分速いよ。
いやなら自分で作ればいいのに・・・そんな力量は無いよねw
悪そうではなく悪い
まじめな話で、
>>702 の言うとおり、
ロックしたい範囲ごとにDB分ける、で本格的な設計思想が
成立するんじゃないかって気がしている。
これからマルチコアCPU当たり前だろ。
そのCPUをクルクル回すには、1マシン内でも分散DBシステムみたいな
知恵を(プログラマが)使って、
テーブル群ごと、あるいはレコード群ごとに別のプロセスが神(1次情報)、
みたいな思想でDB分割しないと速く動かなくなるんじゃないかと。
テーブルごとやレコードごとにロックできるDBMS使ってたって
別にそいつが偉いわけじゃないよね。作ってるなら偉いけど
SQLite を使わざる得ない案件でロック回避のために「テーブルごとにDB」と言うなら まだしも、「本格的な設計思想」で「ロックしたい範囲ごとにDB」って馬鹿だろ。
710 :
NAME IS NULL :2011/01/30(日) 08:34:15 ID:Pg2IwDBC
別プロセスにすればリスクは減るんじゃないか? ただ管理にも数が増え多分負担もある。 理想は一つで全て出来れば一番良いが。
適材適所
いやぶっちゃけ当たり前のようにやってるから。 一つのマシンだと問題になるのはcpuではなくストレージ。 つーか、あんたら世の中のことに何にも関心がないんだな。
も一個言っとくと、これからSQLiteは流行ると思うよ。 Androidの標準DBに抜擢されたから。 でもあんたらはそれも置いてきぼりだな。
変な日本語だな
一体何と戦ってるのか話が見えない
ほっときゃいいんじゃね。 まともな DBMS ならひとつのデータベースに複数のストレージを割り当てるなんて 普通にできるなんてことも知らなさそうだし。
>>716 こういうSQLはおろか、OSの初歩的な挙動も知らないゴミクズがのさばっているのがこのスレだ。
まあ、ゴミクズ同士なかよくやってくれ。
と、ゴミクズが申しております。
そんな口だけのゴミ開発者ばかりの中、スーパー開発者
>>577 神様が
そろそろSQLiteのインプロセスサーバーを発表してくれるはずです
>>713 FirefoxやChromeで使われてるから既にインストール数ベースでは
大流行りだよ。
多分今どき SQLite の入ってないマシンを探す方が難しい。
iPhoneもiTunesもSQLite使われてるしな…
使える人が使う。 使えない人は使わない。 俺psqlもsqliteも好き。
単に資格の勉強のために動かすだけだが、pythonから使ってる
>>712 そりゃそうだがそれをよりにもよってSQLiteでやるこたねーだろ
というのがみんなの意見
もうほっとけ
楽しく便利に使いましょう。 ダメだという人はoracle,posgresql,mysql,sqlserver とか いっぱいあるのでそっちにしましょう。
cygwinから使うのなんとなくいいね
java(正確にはjsp)からsqlite使う方法がいくつかあるけど どれがお勧め? strutsのカスタムタグでsqliteにアクセスする方法ってお勧めではないの?
730 :
本田 :2011/02/02(水) 20:17:43 ID:hqYxeP8x
SQLite Release 3.7.5 On 2011 February 01 (3.7.5) Changes associated with this release include the following: * Added the sqlite3_vsnprintf() interface. * Added the SQLITE_DBSTATUS_LOOKASIDE_HIT, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE, and SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL options for the sqlite3_db_status() interface. * Added the SQLITE_OMIT_AUTORESET compile-time option. * Added the SQLITE_DEFAULT_FOREIGN_KEYS compile-time option. * Updates to sqlite3_stmt_readonly() so that its result is well-defined for all prepared statements and so that it works with VACUUM. * Added the "-heap" option to the command-line shell * Fix a bug involving frequent changes in and out of WAL mode and VACUUM that could (in theory) cause database corruption. * Enhance the sqlite3_trace() mechanism so that nested SQL statements such as might be generated by virtual tables are shown but are shown in comments and without parameter expansion. This greatly improves tracing output when using the FTS3/4 and/or RTREE virtual tables. * Change the xFileControl() methods on all built-in VFSes to return SQLITE_NOTFOUND instead of SQLITE_ERROR for an unrecognized operation code. * The SQLite core invokes the SQLITE_FCNTL_SYNC_OMITTED file control to the VFS in place of a call to xSync if the database has PRAGMA synchronous set to OFF.
ポコポコとコマンドを加えられても手元においてる本に載ってなきゃ使えねえんだよ
英語わかりません と正直に言いましょう。
バーロー。俺はなかなか翻訳されないpythonのAPIの英語ドキュメントを時々読むレベルの人間だぞ
本に追加されたコマンドを書いた切れ端でも挟んどけば?
>>730 かいつまんで書けよ。
日本語だろうと英語だろうとコピペしか脳の無い奴は死ねよ。
素直に英語が読めないといえよw
つーか、コピペするだけなら、 URL を貼ってくれた方がマシ。
せーかい てか今のままでも使うには十分かと。 小さく速くバグがない が好き。
alter table test add column abc integer; ↑これだと一つしかカラムを追加できません。 複数のカラムを一気に追加するにはどうすればいいのでしょうか?
>>736 読めないのはお前だろ。みんながお前と同じだと思うな。黙ってろ
素直に空気が読めないって言えよ うんざりだよ。
複数あddは無理っぽいね
perlの掲示板とかでデータをテキストで書きだす方法あるけど ファイルロックの問題が完全には解決できないんだよね? テキストファイルをsqliteに置きかえれば少しはましになるの? 掲示板に誰か書き込み中にcronが変なことしてデータファイル破壊なんてことはない?
何言ってんだおまえ
意味不明すぎる
>>744 perlでファイルロックは完璧に出来る。
むしろ、sqliteの方がロックの信頼性は低い。
したがって、現状テキストで出来ているものなら
ロック周りを徹底的に見直ししろ。
>むしろ、sqliteの方がロックの信頼性は低い。 何言ってんだおまえ
えっ
>>747 迷惑を振りまくタイプの馬鹿って自覚が無いから困るよね
セマホかクリチカルセクソンを使へと何度行ったら。
SQLiteを使ってSQLの勉強をしております。 insertを行なった際にAUTOINCREMENTなフィールドにセットされた値を取得したいのですが、 どのように取得すればいいでしょうか? そのレコードには他に一意な情報がなくwhere句で再度調べることもできません。
ROWID
755 :
753 :2011/02/10(木) 09:01:07 ID:???
>>754 ありがとうございます。
調べてみたのですが、ROWIDを指定することでROWIDを使って値を参照できそうですが、
そのROWIDを指定してしまうと、同時にinsertに来たスレッドと衝突してしまうかと思います。
プログラム側で直近のrowidを取得したとしても同じようになるかと思うのですが、
これは何か対策があるのでしょうか?
上に書いてあるAUTOINCREMENTなフィールドはPRIMARY KEYにもなっており、そのIDを利用して
ファイルを保存するなどの処理をしようかと思っております。
>755 select * from sqlite_sequence;
コラムの削除できないから テーブルのコピーを削除したいコラムだけ除いておこなった そしたら id 自動で番号ふるように設定する cur_time 自動で今の時間を記録する のコラムがテキストで 'id' 'curtime' になるようなった alterで直せないの?
759 :
NAME IS NULL :2011/02/12(土) 18:17:06 ID:ptWM/iSx
カラム
コラムス
カラコロム
からむなよ。
からまんぼう
コラムニスト
てす
もっぱらOracleメインで使っていて、Postgresの現場に行ったとき、 「RowIDがないとかこんな腐ったDBMSは嫌だ」 とか思ったけど、SQLite使うようになったらPostgresが 恵まれていたことに気が付かされたよ まあその代わり、ループで平文SELECT発行するとか、 手抜きしても速度は早いんだけどね
RowIDってなんにつかうの?
OraceやPosgresql と sqlite を比べちゃいかんでしょ。
RowIDはまんぞくにSQLを使えない人のためのお助け機能みたいなものだから 覚える必要は全くないんだよ
>>767 前任者が主キーのないテーブルとか恐ろしいものを残して、
かつ重複レコードが発生してるときに必要になる
>>769 みたいな考えの足りない馬鹿の尻拭い機能
>>770 満足にSQLをつかえないとこんな見当外れのレスになる
まさに反面教師だな
だからぁ〜、主キーがない状態でレコードが重複してるっつってるのに、 SQLでどうするのよ?重複したレコードをまとめてDELETEしろとか 言ってるの?馬鹿なの?死ぬの? 馬鹿なのは勝手だけど、もう少し考えてからレスするようにしようよ
うはっww もうちょっとSQLの勉強してこいよ・・・恥ずかしい
この数レスで分かったことは769と771が無能だってこと。
重複する2レコードがあって「かたっぽだけ消したい!」というときにrowIdで指定するってことかな。
RowIDを使わななければならないのがダメなのか RowIDがないのがダメなのか
>>777 前者だろう
RowIDがあってもそれは実装依存でSQLではないからね
その通り それが理解できていれば 「RowIDはまんぞくにSQLを使えない人のためのお助け機能」 なんて噴飯もののセリフが出てくるわけもなく
文字列についてハッシュ値を生成し、そのハッシュ値からテーブルを作成したいのですが、 どのようにすれば実現できるでしょうか?
create table newtable as select id, s, myhash(s) from origtable; SQL とか必要なときにぐぐるぐらいのスキルだから間違ってるかもしれないけど たぶんこんな感じ。 myhash は780が自分で作るべきユーザー関数 md5 でも crc32 でもご自由に。
主キーが無いのに重複することってありえるんだろうか
出席をとりマース。 やまだー。 「はい。」「はい。」「はい。」「はい。」 やまだー。 「はい。」「はい。」「はい。」「はい。」 やまだー。 「はい。」「はい。」「はい。」「はい。」 やまだー。 「はい。」「はい。」「はい。」「はい。」
何の事か良く解らんがやまだーを退学させるときに問題になるな
やまだは1カラムの情報でしかないから例えにならん。 「X国A県B市C町1-1-1に住んでて2000年1月1日生まれの男性山田太郎」なら特定できるじゃん。 それで特定できないような完全重複が起きうるDBならそれはそれで困らないものってことだろ。RowIDがあれば何かを解決できるとは思えんね。
>>787 自分の言ってることが、何を解決するかを含んでいると気づかないのものなのかね・・・
どのDBでも行を一意に識別する内部IDは持ってる ただそれが表にモロ出しになってるのがOracle 他のDBは内部でしか使ってないってだけ
えーとつまり、 生徒_id, 点数 ってテーブルにするところを 生徒_国, 生徒_県, (めんどくせ), 生徒_名, 点数 ってテーブルにしろってこと? それとも X国A県B市C町1-1-1に住んでて2000年1月1日生まれの男性山田太郎 っていう生徒IDにしろってこと?
めんどくせーからそれぞれ改名させろ
>>790 id,生徒
id,点数
こうしろってことじゃね?
まあ俺なら名前を変えさせるけど。山田太郎mk2とか。
RowIDとか言い出す奴は絶対に信用するなよ
SQLiteスレでする話題ではない罠
確かに。もっと簡単に使いましょ。
>>781 =793=馬鹿
結局、重複レコードをどうSQLで処理するんですか〜w
重複除外してテンプテーブルに入れてDELETEしてまたINSERTとか言い出さないでくれよ
それが可能なのはレコード全体が完全重複してる場合だけ
そろそろえらそうなこと抜かすばかりで、ニートタイムに勝利宣言するだけじゃなくて、
いいかげん具体的解法をお願いしますね〜
なにをいっているんだ レコード全体が重複してなかったらそれは別のレコードだろう?
RowID 出席番号 名前 ひとこと 00001 01 山田太郎 俺が明訓を変える 00002 01 山田太郎 俺が明訓を買える 00003 01 山田太郎 いやいや拙者が明君を 00004 02 ジョンスミス 俺が切り札 00005 02 ジョンスミス 俺がエース 00005 02 ジョンスミス 俺じゃなきゃつとまらん (以下略 クラス全員に偽者が現れました 欲しい生徒は一番最初に登録された人だけです 他は要りません 自慢のSQLでなんとかしてください
重複するのが嫌なら重複させなきゃいいのだ。 重複させた奴に責任取らせればいいのだ。
なんで一番最初に登録された情報が正しいんだよ そんなアホみたいな対応する奴は速攻首だろう もうねSQLとかそれ以前のもんだいだよね
RowIDの00005が重複しちゃってるけどコピペのせい
>>798 00006と読み替えるよろし
いやそれROWIDでなんとかすべき要件じゃないからね
>>800 >>802 そうだよ
一番最初に作ったやつがDB知識皆無の馬鹿で、本来一意が望まれるカラムを
プログラムで制御してて、しかもそれにバグがあってコメントが変になって
二重登録とかされるとか、そういう代物にぶち当たった
あまりのひどさに頭を抱えると
「設計に時間を割く人がいるけどここは納期優先だから!」
とか、えらそ〜に抜かしおった
馬鹿はみんな同じだね
だけど、それは今問題にすべきことじゃない
RowIDなしでもSQLでなんとかできるもん!とえらそーに
抜かしたやつが魔法のSQLでなんとかするのが今回のお題だろ?
ちなみにOracleでもROWIDは単に一意なだけで登録順の連番でもなんでもないから 798の希望は満たせないからね
>RowIDなしでもSQLでなんとかできるもん! そんなこと言ってる奴はいないが お前は誰と戦っているんだ
>>804 お前大丈夫か
ちょっと分裂症入ってないか?
仮にROWIDがあってもどうにもならないだろうそれ
間違いなく言えるのは馬鹿はお前だ
オマエら・・・容赦ないな
>769 名前: NAME IS NULL [sage] 投稿日: 2011/02/14(月) 17:55:36 ID:??? >RowIDはまんぞくにSQLを使えない人のためのお助け機能みたいなものだから >覚える必要は全くないんだよ 魔法のSQLはまだかね? 自演ばかりで飽きたぞ
残念な人だ
なんというか 馬鹿に物を教えるってことの限界を感じるな
まー、魔法の回答が出てくると思わなかったけど、結局負け惜しみか ID出ない板でよかったな
>前任者が主キーのないテーブルとか恐ろしいものを残して この前提が常識的にありえないのを理解出来ない、貧相な現場でしか働いたことがない残念なカスだな
sawaruna yo mou hottokou
>>798 ROWIDがあったらどう解決できるの?
何も変わらんわな。
はあ?なに得意気になってるんだ?
>>816 OracleのRowIDはふつーレコード登録する度に新しくなるからなー
よっぽど長く運用してるなら一周するんだろうけど、まあそれがまずいってんなら
もっかいお題出すぞw
RowID 出席番号 名前 ひとこと
00001 01 山田太郎 俺が明訓を変える
00002 01 山田太郎 俺が明訓を買える
00003 01 山田太郎 いやいや拙者が明君を
00004 02 ジョンスミス 俺が切り札
00005 02 ジョンスミス 俺がエース
00005 02 ジョンスミス 俺じゃなきゃつとまらん
太郎とジョンを一人ずつにして、その他は抹殺する魔法のSQLをお願いしま〜すw
負け惜しみは飽きたんで、解を添えてくださいね〜
818 :
NAME IS NULL :2011/02/16(水) 00:30:50 ID:KzQQkFbS
おまいらヒマ?
お前に必要なのは魔法のSQLじゃなくて、とっととテーブルの仕様変更して データを再投入する技術だろ、へっぽこコーダーさん
SQLiteと関係ねーだろ、と思ったらSQLiteにもROWIDってあるんだ へー でも使うの自分だけのお一人様DBには関係ないよね
>>817 SELECT 出席番号, 名前 FROM テーブル GROUP BY 出席番号, 名前
>>817 >太郎とジョンを一人ずつにして、その他は抹殺する魔法のSQLをお願いしま〜すw
なぜそれが不可能だと思ってるのか理解に苦しむな。
ほれ。
delete from table where 出席番号 = 01 and (ひとこと = '俺が明訓を買える' or ひとこと = 'いやいや拙者が明君を')
delete from table where 出席番号 = 02 and (ひとこと = '俺がエース' or ひとこと = '俺じゃなきゃつとまらん')
お前、WHEREには単一カラムしか使えないとでも思ってるの?
もちろん
>>822 のようにしてもいい。というかそっちの方がよほどスマートだな。
結局ROWIDがあるかないかの問題ではないだろうが。
もしROWIDが登録順に振られることが保証されるなら、お前が
>>798 で書いたような「一番最初のものだけ残したい」という用途において有効なわけだが、それは
>>805 で論破された。
で?
お前もしつこいよ 改行忘れるぐらい興奮する前に空気嫁カス
>>798 ,
>>804 ビックリするほど馬鹿だなお前wwww
こんな奴がIT業界にいると思うと世も末だ
もうやめましょ。 sqliteにはそんなものありません。 どうしようもありません。
一連の流れを読んだ
>>804 も結局「RowIDはまんぞくにSQLを使えない人のためのお助け機能」という主張だよな
自分が何言ってるのか全く理解してない所が絶望的に馬鹿だけど
同じ主張を持つもの同士仲良くしろよ
そもそも
>>817 にはひとつも重複行がないじゃん
何言ってんだこのバカ
チョコレートくれたら静かにする。
ネギあげますぅ
ところで、
>>817 はバカだから思いつけなかったようだけど、
全てのカラムが完全に重複してるレコードがあるテーブルにおいて、そのうちの1行だけを指定した操作を行いたい時にはROWIDが必要になるだろうな。
まあ全deleteして適宜再insertでも同じことはできるけど。
すべてのカラム値が重複しているならDISTINCTとGROUP BY使えばいいじゃん. なんでROWIDが必要なの?
>>798 LIMIT 1 で消すか、ひとことで消せばいいよね
Version 3.7.5 of SQLite is recommended for all new development. Upgrading from all prior SQLite versions is recommended. これからSQLite使う奴は3.7.5が推奨だ 前のバージョン使ってる奴らはとっととアップグレードしろ 繰り返す、古いバージョン使ってる奴らはとっととアップグレードしろ これは訓練ではない 以上
1回のSQLで頑張らなくても 重複全削除→正常なデータを追加 で済む話だろ
重複全削除ですでに正常なデータが存在しないわけだが・・・
>>834 >>835 それ、バージョンアップのたびにしょっちゅうそのアナウンスが出てるから、
別に 3.7.5 だけが特別なバージョンアップってわけではないよ。
また馬鹿が沸いてきたのか?
つか、834 はただ訳しただけに見えるんだが。
843 :
831 :2011/02/16(水) 19:15:41 ID:???
>>832 アホの
>>817 を擁護するつもりはないんだけどさ、それはSELECTの時ならそれでいいと思うけどUPDATEやDELETEには使えないんジャマイカ
LIMIT
845 :
831 :2011/02/16(水) 20:06:51 ID:???
そうか、確かにLIMITでいけるな。
これで
>>817 が求める魔法の SQL(w とやらは出揃った感じかな。
847 :
NAME IS NULL :2011/02/16(水) 21:48:03 ID:c8qdF154
>>823 ゲラゲラ
まさかホントにマジレスしてアホみたいにWhere条件並べるとはさすがに予想外だったわ
しかも夜中にw
せっかく流れを変えようとしてくれた人がいるのに、わざわざ興奮して回答してくれるとは感謝に堪えないです
今回
>>817 でわざとレコード数と条件を限定して、お題を出したのは、条件句をズラズラ
並べるってその馬鹿な解法が見たかったからなんだが、まさかまんまと得意気になって
披露してくれたとは素晴らしい!さすがSQLのプロ!すごいぜ!!
おまけにGROUP BYじゃレコードが限定できないのに
「というかそっちの方がよほどスマートだな。 」
ってどんだけ真性なんだよー、って凄すぎて感動した!
さて、期待以上の迷回答が出たところで応用問題です(・"・)キリ
RowID 出席番号 名前 自己紹介 気になること ひとこと
00001 01 山田太郎 食欲旺盛です グルーポンのおせち がんばる
00002 01 山田太郎 食欲旺盛です グuル、ポンのお がんばる
00003 01 山田太郎 食欲旺盛です グuル、ポンのお がんっbr
00004 02 ジョンスミス 俺が切り札 尖閣問題 俺はリーダー
00005 02 ジョンスミス 俺gkりfd 尖閣問題 俺はリーダー
00006 03 梨野権平 種撒きます 八百長メール 伝統第一
00007 03 梨野権平 種撒きます 八百長メール 伝統第一
(略
00099 10 佐藤一郎 イチローです 小沢さん なかよくしてね
00100 10 佐藤一朗 イ&TO-dす 小沢さん なかよくしてね
Q.クラス名簿のテーブルがあります。本来は出席番号が一意だと期待されていましたが現実は見ての通りです
上記の選択結果から傾向を推測して、まともなレコードだけ引っこ抜いてみてね
今回は仕込みなしなので存分にGROUP BYとかLIMITで得意気になってもオッケーですよ
ちなみに俺が見たいのは馬鹿丸出しのWhere列挙でも魔法のSQLでもどっちでもいいんだからね(・∀・)
チョコやるから帰れ。
>>847 もう君がなにを言ってもだれも相手にしないとおもうんだ
だって君さ、ほら、馬鹿だから
マスターとテーブルを分けるっての、試してみる価値はあるかなと思って、 SQLite.NETでファイルを2つ読み込ませてみたら、接続文字列が別になると データセットも別になるんだね・・・・。 パフォーマンス以前にリレーションが貼れないお・・
見ていて気になったんだが ROWID使わずに重複行の削除をするSQLはスマートに書ける? SQL> set feedback off SQL> create table hoge (col char(3)); SQL> insert into hoge values('AAA'); SQL> insert into hoge values('AAA'); SQL> insert into hoge values('AAA'); SQL> insert into hoge values('BBB'); SQL> insert into hoge values('BBB'); SQL> insert into hoge values('CCC'); SQL> insert into hoge values('CCC'); SQL> insert into hoge values('DDD'); SQL> SQL> delete from hoge h1 where rowid > (select min(rowid) from hoge h2 where h1.col = h2.col); SQL> SQL> select * from hoge; COL --- AAA BBB CCC DDD
>>847 丸一日かけて必死に長文書いてたんだな…
どこを縦読みしたらいいのかよくわからないけどとにかく健気なことよ
>>851 CREATE TEMPORARY TABLE TempHoge(
SELECT DISTINCT hoge.col AS fuga FROM hoge
):
DELETE FROM hoge;
INSERT INTO hoge SELECT fuga FROM TempHoge;
DROP TABLE TempHoge
こんな感じ?
SQLite的に正しいのかどうか自信ないので念のため
>>847 おまえ、ものすごい恥垢臭で周囲から生きる悪臭公害と言われているぞ。
その狂った頭の方は手のつけようがないけど、包茎は治る障害なんだから、
手術しろよ。
>>851 既出だけどROWIDは通し番号じゃなくてGUIDみたいな文字列なので
MINとかMAXとかを使っても意図した列は取れない
別にSQL1回でやらなきゃいけない決まりなんてないんだから
単純に重複の除去なら853みたいにすればいいし
それ以外の方法でもどうにでもできる
>>853 ベースがOracle使いなんでlimitの制約がわかんなくて
もしやlimit にselect count(*) -1 みたいに書けるのかもと思ってけど無理なんですね
文字列でもmin/maxは採れるっての 何を言ってるんだ
ASCIIコードの順になるんだからmin/maxで意図できるだろ 何を言ってるんだ
>>858 何か意図してくださいとかそんな要件を書いたつもりはないですし
そもそも同じデータなんだから何か意図する必要はないです
別に複数回のSQLでも構わないですので、それ以外の方法とやらを披露願います
>>853 だけど、書いておいてなんだけどダメでしたね
テンポラリテーブルじゃなくて、あの書き方じゃVIEWだった
ごめんなさい
また書くの面倒なので各自で脳内補完してください
馬鹿の相手するなんてお前ら優しいな
なんだかんだ 暖まったのでわとw
>>864 だいじょぶ だいじょぶ
実際、テンポラリテーブルにDISTINCT/GROUP BY/LIMITで待避させて、
その間に本丸を消すやり方以外にあるんですかね
>>858 は他にどんな方法があると?
>>847 その問題ってカラム数増やしただけで
>>823 から全く変わってないよな。
ROWIDがあろうとなかろうとできるだろ?応用も糞もない…。
そろそろいい加減にROWIDがないとできない問題出してくれないかな。
それともROWIDがあればDBMSが「まともな日本語」を自動判別して選んでくれるのか?そんな魔法のようなSQLがあるならぜひ教えて欲しいんだが。
SQliteはまだまだ勉強中なんだがPL/SQL書けないん?
>>851 ならcolをDISTINCTで取ってLOOPしてLIMIT 1だけで最初のレコード取れるし
結局テンポラリ作って放り込むんだけどさ
また興奮して改行しない馬鹿が暴れてるし・・・
>>870 SQLiteはお一人様DB
ストアドとか期待するようなものじゃないですから
872 :
NAME IS NULL :2011/02/17(木) 00:45:25 ID:5d2yNMAf
また、コラム小僧現れないかな。 低俗に荒れるから
お前らあんまりガキンチョ虐めてやるなよ あれ、でも前任者とか言ってたし、小学生ではないのか?
875 :
NAME IS NULL :2011/02/17(木) 06:29:09 ID:b4vufGLH
重複行なんかUNIONすりゃ一発で消えんだろうが
うにおん!
Kieruyo!!MIRACLE
>>847 「全部where区で選択+LIMIT 1」 じゃだめなのか?
少しでも違いがあるのであれば、区別がつくからそれを削除
まったく同一な場合はどれを消してもいいのでLIMIT 1で削除
これでまったく矛盾ない制御ができるよね
これはphpmyadminなんかがmysqlの操作するときの手法なので 荒唐無稽な話ではないよ
SQLiteならROWIDあんだからもういいだろ なんの役にもたたない議論は秋田
881 :
≠847 :2011/02/17(木) 16:38:36 ID:???
とてもヒドイ唯一の実装ですね 大変参考になりました おしまい
SQLも満足に使えない馬鹿がやってはいけない実装をした後 SQLも満足に使えない馬鹿が解決すべき問題を放置したケースだな 非常にどうでもいい無駄話
>>879 真っ当な指摘。(全く不可能ではないが、かなり醜く非効率になるという意味で)
>>847 はおバカちゃんなのでそういうツッコミもできずただカラム増やすしかできないんだよね、かわいそうな子。
>>882 だけど、スキーマいじれない下請けだとこうするしかないよね。
問票には「adhocな対応したけど根本対処ならスキーマ直せ」
と書いてクローズ判子貰いに行きますよ。
>>884 典型的な妥協の産物的レガシーシステム
そして誰も何もしない
886 :
NAME IS NULL :2011/02/17(木) 22:57:26 ID:dlRsiEpJ
RowIDの有効性に気付きつつも認められない、そんなチンケなプライドを 頼りに2chで負け惜しみをやめられない滑稽な負け犬の怨嗟が気持ちいい
>>862 >ASCIIコードの順になるんだからmin/maxで意図できるだろ
ひんと: ROW ID の ASCII コード順にしたいわけじゃない
# ひょっとして GUID みたいなものって言うのが理解できてないのか?
888 :
NAME IS NULL :2011/02/17(木) 23:04:06 ID:dlRsiEpJ
文字列のMINを取れないとか噴飯ものの珍説を力説するわ、 他に方法はある!とか言って何も解を出せないとか、 そんなチンケなやつがまた頑張りはじめた様子
> RowIDの有効性に気付きつつも認められない、そんなチンケなプライドを > 頼りに2chで負け惜しみをやめられない滑稽な負け犬の怨嗟が気持ちいい 語るに落ちるだな。こういう奴ってなんでだか 罵倒してるつもりで自分の現状を説明しちゃうんだよね。 RowIDが万能でないと気付いてしまって、自分の無知を認めさせられまいと 話題をそらすのに必死なだけだろうに。「滑稽な負け犬の怨嗟」とは実に的確だ。
>>888 >文字列のMINを取れないとか噴飯ものの珍説を力説するわ、
そんな奴いたっけ?どのレス?
>既出だけどROWIDは通し番号じゃなくてGUIDみたいな文字列 これ大嘘 ソースコード読めや int regRowid = iMem++; /* Rowid for the inserted record */ 半可通の知ったか乙
>>892 本当にソースコードを読んだことあるならこんな間抜けなレスはしない
勉強不足ですぞ
>>893 はあ?何言ってるの?
具体的に説明できずにグダグダ言い訳して、相手が根負けするまでしつこく粘ろうって
頭のおかしいやつによくあるパターン?
あんたは知ったかの間抜けじゃなくてただのキチガイなのかな
違うって言い張るなら、適当にデータ作ってSELECT rowidしてみろよ
現実に通し番号の数値が出てくる
おお失礼失礼、文字列でなく数値だと言いたかったのか てっきりROWIDは通し番号だと言い張ってるのかと勘違いしてたよ >現実に通し番号の数値が出てくる え?もっとよくソース嫁よ
はいはい 具体的に出せないから粘ろうっていうんですね おそらくインクリメント演算子とか言っても理解できないだろうし、 そこまでヒマ人じゃないので勝手に勝利宣言を言い続けてくださいね そのツラの皮の厚さが何かの役に立つと良いですね
In SQLite, every row of every table has an 64-bit signed integer ROWID. The ROWID for each row is unique among all rows in the same table.
http://www.sqlite.org/autoinc.html 此話題秋田。
は?ROWIDは再利用されるケースがあるんだよ ヒント上げたらからもう一回ソース読んでおいで
はいはい i64という天文学的な数値が再利用されるのと、 「rowidはGUIDみたいな文字列」 とかいう大ボラが等価になるんですよね
ヒントとか言ってる無敵くんはもう相手にすんな 明らかな嘘でも認めないのがキチガイってもん この手のって中国人の女に多いよw
君はなにと戦っているんだい 明示的にROWIDを指定できる以上i64の最大値がうんぬん以前に通し番号であるとは定義できない
ちなみに「rowidはGUIDみたいな文字列」は俺のレスじゃないぞ
はいはい 無敵くんの言う通りですよね rowidはGUIDのような文字列ですよね 天文学的な数値が桁あふれするほど、お一人様DBでは多大な負荷がかけられるんですよね 詭弁のガイドラインに「ごくまれな反例」云々とかあるのも、無敵くんのために作られてるんですよね じゃあがんばってください
>>897 あれ あったのねw
知らないだけだったのね。
ま 今後も使う事はないと思う。
pgsqlにもなかったっけ?
>>902 猿芝居やめれ
ヒントとか寒いこと言ってるのお前しかいないんだからww
>ヒントとか寒いこと言ってるのお前しかいない ワロタ
検索したら 858 のレスにコイツはずっと粘着してたのかw
それ以前にROWIDの話題で荒れてたのか・・・・・
>>903 は さんざん馬鹿にされているのと同じ人?
ヒント(キリッとか寒い感性はいくら別人のふりしてもごまかせないよなーw こんだけ分かりやすいフラグを発してるやつも珍しいおww
>>909 もうヒント(キリッはいいから、これ以上笑わせないでくれ・・・
眠れないじゃないかァァァ
ROWIDが通し番号でないことは理解できたかい?
(キリッ
また馬鹿が暴れて墓穴掘ったのかw
>>894 >具体的に説明できずにグダグダ言い訳して、相手が根負けするまでしつこく粘ろうって
>頭のおかしいやつによくあるパターン?
さすが自分のやることはよく理解しているようだな
月曜から誰にも賛同されず、馬鹿にされ続けているのに、まだ続けると言うのか 「俺の敵は全て馬鹿一人が自演してるだけ」という防衛機制が働いてる馬鹿はマジで救いようが無い このタイプの馬鹿は死んでも直らない
ヒントのオッサン、いつまで頑張る気なんだww ・明らかな嘘への指摘に対して、それを置いて枝葉末節に噛みつく ・あくまでも具体例を挙げずに(というかソースが読めないから)レスを引き延ばす手法 ・「ヒント」とかずれた感性 こんだけフラグが立ってるんじゃ、もう猿芝居で勝利宣言(キリッを続ける以外はないよねw
つーかRowIDなんてDDL使ったらめちゃくちゃになるもんをアテにコーディングするなんて、キチガイの所業。 しかもID用途じゃなく、RowIDの大きい小さいを目当てにしてるなんて、ホント、マジキチ。 普通ならコードレビューでぶん殴られる。
>>916 日本語が不自由そうなので、SQLで書いてもらっても良いですよ
もう自演と信じ込まないと精神崩壊してしまう段階まで来てしまったんだねw
涙が出てきた
>>916 君やばいなw 精神分裂状態だな
これ以上虐められると自殺しかねないwww
922 :
NAME IS NULL :2011/02/18(金) 02:55:55 ID:EsuEucvC
大体、GUIDなんて得意気に知ったかこくから突っ込まれるんだよ そもそも突っ込んだの俺じゃねえし、勝手に自爆しておいて俺のせいにすなやww あっさり釣られるわ、GROUP BYだとか、ヒント(キリッとか何回目の自爆なんだね 違うってなら、これからずっとID出して書き込んでみなさい 自爆が怖いんだろうから、できるわけねーけどなー
923 :
NAME IS NULL :2011/02/18(金) 02:59:03 ID:dHOu19G1
自殺しないでくれよ
まずお前の今日のレス番を列挙しろよ それと・・・IDってどうやって出すの?
925 :
NAME IS NULL :2011/02/18(金) 02:59:59 ID:EsuEucvC
うん こんな楽しい猿芝居が見られるなら死ぬの我慢するお
926 :
NAME IS NULL :2011/02/18(金) 03:18:55 ID:dHOu19G1
sageないだけ
何のはなししてるのか分からないし、これがいつまで続くのか分からないけど IDじゃなくてトリップ付けてくんない?NGにするにはそっちの方が都合がいいから
今夜もまたやってるのか もう気違いの相手をするのはやめようぜ
RowIDが通し番号とか馬鹿かこいつwwwww
件の包茎くんは自分の恥垢臭で頭がおかしくなってしまったから、しょうがないのです。
もう基地街には懲り懲りだよ
ごめんねほんとうにごめんね SQLiteのROWIDのことまったく知らずに OracleのROWIDのことずっと話してた俺が悪かったんだね
936 :
ヒント :2011/02/18(金) 10:27:19 ID:???
ID表示のヒントください。
ROWID君はいつまで生き恥をさらし続けるのだろうか
Oracleこと良く知らないんだけど、OracleのROWIDは数値ではないってこと?
>>940 さすがOracle
深いというか複雑というか。
傷のなめ愛
947 :
NAME IS NULL :2011/02/18(金) 19:39:16 ID:nLsmwyvW
民度が極度に低いスレだね
つか要件満たすのにROWID使わない。で終わりなのになぜROWIDで盛り上がってんの?
基地街降臨
951 :
NAME IS NULL :2011/02/18(金) 22:57:08 ID:EsuEucvC
IDをさらせず負け犬の遠吠えを繰り返すヘタレニートの怨嗟の声が心地いい ああ、敗北を知りたい・・・
>>951 お前負けてんだよwww
そりゃもう見てて無残な位に
>>951 一週間経つわけだが、お前の意見に賛同してくれた奴、居たかい?
954 :
NAME IS NULL :2011/02/18(金) 23:18:02 ID:EsuEucvC
得意気に釣られ長大な条件句、スマートGROUP BY(笑)、他に方法アル!→ナイアルヨ、 そしてちったかGUID、ヒント(キリッなど救いがたい無能さからくる数々の自爆 そして自爆が怖くてIDさらせない敗北虫が、押し寄せるストレスに耐えきれずニートタイムに大発狂 くやしいのうww
実に悔しそうで良い感じのレスだね
止まったゼリーを揺らす基地外のせいでまたこれだよ…
驚くべきは ID:EsuEucvC のレスや意見でひとつも正しい物が無いことなんだよ どれも総突っ込み受けて馬鹿にされたら話題を変えて、また馬鹿にされての繰り返し ここまで頭悪い奴は滅多にお目にかかれない
>>954 お前の顔赤黒くなってそうだな
ちゃんと呼吸しないと死ぬぞ?
これが、押し寄せるストレスに耐えきれない敗北虫の姿…
960 :
NAME IS NULL :2011/02/18(金) 23:43:42 ID:pXEgTP7Q
SQLiteスレの結論としては
ROWIDはOracleのそれと違って登録順に連番が振られるから
主キーみたいに使えて便利!
でもDELETE→INSERTすると同一番号振られるから、
ユニークキーとして使うとまずいケースもあるよ〜
ってことで
もうほんと勘弁していただけませんかね
>>805 =
>>935 からの切実なお願いでした
961 :
NAME IS NULL :2011/02/18(金) 23:54:08 ID:EsuEucvC
>>960 >でもDELETE→INSERTすると同一番号振られるから
また試しもしないで自爆かいね
まあID出して告白してきた点に免じて、優しい俺は今回それ以上の追求はしないけど、
それは明らかに違うんだからね!
COMMITしてませんでした、とかナシなー
>>960 そんな言い方でキチガイ馬鹿に通用するわけが無いだろw
別にお前は関係ないから諦めろ
963 :
NAME IS NULL :2011/02/18(金) 23:57:34 ID:EsuEucvC
>>962 の虫はSQLまんぞくおじいちゃんか
「RowIDはSQLがまんぞくに使えない人のお助け機能なんじゃ ほっほっほ」
という名言を吐いた人ですね
965 :
NAME IS NULL :2011/02/19(土) 00:12:40 ID:dcvV/oBv
>>964 毎日100万件インサートして、100万件デリートしても1263億年かかるけどな
RowIDが再利用される日が訪れるよりも、地球が白色矮星に飲み込まれる方が早いんじゃね?
だから試していないのは明白だが、まあ今回はそれは追求しないでやる
>>960 気違いちゃんが
>>817 で自らOracleのRowIDを前提としているから、君は難癖を付けられて標的にされだけなんだよ
SQLITEのROWIDは64bit整数値で保存されるけど、
・ROWIDは最大値まで使い切ったら使っていない番号を再利用する
・ROWIDはユーザがINSERT時に指定可能
・vacuumを使用した場合1から詰めて再採番される
・他のテーブルにデータをインポートした場合インポート時に新しいテーブルのROWIDが決定される
つまり仕様上、ID:EsuEucvC の気違いちゃんが言う 挿入順を保証する情報じゃないのさ
968 :
NAME IS NULL :2011/02/19(土) 00:17:01 ID:dcvV/oBv
ID出さないやつは敗北虫だから読む価値ゼロだね 1263億年生きられないから時間は大切だー
969 :
NAME IS NULL :2011/02/19(土) 00:46:17 ID:0y7I806U
なんでrowidに固執するんかの SQLの仕様ではそのような性質を持つものはシーケンスになってるだろ ローカルのSQL仕様でがたがた騒ぐことも無いだろ SQLiteはシーケンス無いかもしんないけど ちなみにoracleではrowidじゃなくてrownumが似たようなものだったな
>>969 伝説的な馬鹿の出現でそうなっただけで
レスを読み返せば流れはわかるだろうけど時間の無駄だからお勧めしない
ROWIDをNGWordに入れた方がいい
そろそろ次スレを立てたほうがいいのでわと
>>969 全然似て無いだろ・・・
rownumは「結果セット」につくもので
永続性はまったく無いだろ
test
tast
+ 激しく忍者 + X ∠ ̄\∩ |/゚U゚|丿 〜(`二⊃ ( ヽ/ ノ>ノ UU
お前らスルー能力無いのな
SELECT * FROM SQLITE_MASTER
not found.
いやもういいから
>>980 なんだ、そいつwwwwww
噴飯ものの間抜けだなwww
梅
INSERT INTO ANAL
tksqliteでTEXTのカラムに'0001'と入力すると'1'で保存されてしまうのですが、 回避方法はないでしょうか? 先頭のゼロが消えてしまうようなのですが。 例:↓のnameのカラム CREATE TABLE 'asd' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENT, 'name' TEXT DEFAULT '' )
988 :
987 :2011/02/25(金) 11:10:24.45 ID:???
回避方法はありました。F4キーのデータ編集ウィンドウで入力すればいいようです。 そうでないと0x01を入れたときも同様に unrecognized token: "0x01" UPDATE 'main'.'asd' SET "name" = 0x01 WHERE rowid = 8; というエラーになることが判明。
SQLiteってインラインビューできないの?
アイラビューオーケー
>>989 ただの副問い合わせなんだし普通に動くだろ
やってみなされ
できますね SELECT T.* FROM ( SELECT DISTINCT tbl_name FROM SQLITE_MASTER ) AS T; ただPRAGMAは動かないな SELECTしかできない
SQLで改行コードの置換ってできないんですか?
>>995 SQLiteのSQLで改行コードの置換ってできないんですか?
やってみなされ
うめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。