SQLite 9
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
2011/02/27(日) 01:22:40.55ID:???SQLite Home Page
http://www.sqlite.org/
0153NAME IS NULL
2011/05/19(木) 16:30:09.82ID:???馬鹿はあなたですよ。ふふっ
0154NAME IS NULL
2011/05/22(日) 19:20:36.24ID:???// : : : : : : : : : /\ : : \: : : : : : : : v:ハ、 な…何なのこの雰囲気…
: : : : : : : /: : / 丶: : : : : : : : : : : ハ|V{ハ このままじゃあ皆…
ii : : : : : : : : : / }: : : : : : : : : : i:i:|ivi:リ
|i : : : i : : i : :, ー=-‐':|`ヽ:i: : : : : : じじハ
|i : : : | : :ハ:i| j| jハ : : : : |: |i i|ハ, . ヘ、
ハ : : :iiハi:{ 八 '"芹示 |: : : : ハ: じj/: : : : : ヽ
V :ハ从,茫ミ、 v:ツ | : : ,/,ハ: V: : : : : : : :/}
i爪: :\ vリ ....::::::: ノ : :/r' У: : : : : ,ィ彡' ,. ヘ、
` ミ;ゝ.:: , `ー彡|_/: : : : : :/ _/ : : : : :ヽ
丶 、..:::) / |�Y: : : : : :/_,ィ勿' : : : : : ,ィ刋
,. :'" > . _ . r: ´ / 丶: : : : i三彡': : : : : :ムィ'"
/ : : : : : :_:_:_:_,≪r‐一 ´ / ̄ ̄ ̄`'く: : : : : :/
ヽ : r<´ ̄ ̄i i| ,ィー…< / \: : / /
0155NAME IS NULL
2011/05/22(日) 22:11:58.40ID:???0156NAME IS NULL
2011/05/24(火) 16:06:03.32ID:???0157NAME IS NULL
2011/05/24(火) 18:49:17.52ID:???アタッチできますよ。
0158NAME IS NULL
2011/06/05(日) 07:56:33.34ID:zgB9UHdm0160NAME IS NULL
2011/06/07(火) 15:30:44.24ID:js37uI9cMacOSX
sqlite3
apache2
perlでCGI
DBD::sqlite
というDBにコネクトしてる状態で
my $insert = "insert into space(hoge) values ('hoge');";
$dbh->do($insert);
などinsert文を実行しようとしたらエラーがでます、select文などは問題ないのですがいったい何が原因なんでしょうか?
0161NAME IS NULL
2011/06/07(火) 15:56:20.23ID:???0162NAME IS NULL
2011/06/07(火) 21:46:42.26ID:???エラーが出ますって
エラーメッセージって出ないの?
0163NAME IS NULL
2011/06/07(火) 23:41:45.42ID:???エラーメッセージは出てないんじゃないかな、たぶん
エラーメッセージの出し方から教えてあげるといいよ
0164NAME IS NULL
2011/06/08(水) 00:21:54.87ID:???でerrorlogをチェックするとか、
$dbh->trace(1, 'trace.log');
でログを吐くとか。
0165NAME IS NULL
2011/06/08(水) 00:49:40.12ID:???sqlite3
Android2.2
アンドロイドで作ったアプリでCSV1からDB1を作成しました。
その後、CSV1の更新ファイルであるCSV2から同じ手順でDB2を作成しました。
CSV2はCSV1のデータをすべて含んでおり、かつ、4行分登録されるデータが多いです。
ところが、作成したDB1とDB2を比べると、データ数の少ないDB1の方がDB2より9k程大きいのです。
データが欠けていないかと、DBファイルをダンプして比較しましたが、
データ自体に欠けはなく、DB2はきちんとCSVの差分だけDB1より多くデータを持っていました。
こういったことが起こる原因について、ご教示願えないでしょうか?
0166NAME IS NULL
2011/06/08(水) 03:03:38.83ID:???データ量にあわせてDBも大きくなるけど、小さくはならない
アプリがどうやってるかしらんけど、なんか本来のデータとは
別に裏でデータを追加したり削除してるから大きくなった。
0167NAME IS NULL
2011/06/08(水) 12:48:00.72ID:yzo9cLWq[error] [client ::1] DBD::SQLite::st execute failed: unable to open database file(14) at dbdimp.c line 403 at ***.cgi
です
どういう意味でしょうか?
0168NAME IS NULL
2011/06/08(水) 12:57:15.42ID:???見たまんまなわけだが。
0169NAME IS NULL
2011/06/08(水) 13:03:26.83ID:yzo9cLWq[error] [client ::1] DBD::SQLite::st execute failed: unable to open database file(14) at dbdimp.c line 403 at ***.cgi line 14
0170NAME IS NULL
2011/06/08(水) 13:05:33.32ID:yzo9cLWqmy $insert = "insert into space(hoge) values ('hoge');";
$dbh->do($insert);
0171NAME IS NULL
2011/06/08(水) 13:12:20.28ID:???0172NAME IS NULL
2011/06/08(水) 13:12:35.06ID:???DBIで宣言したsqliteのDBファイルが存在しないんじゃないの?
0173NAME IS NULL
2011/06/08(水) 20:05:30.16ID:???失敗し、実行:*** cgiの14行でdbdimp.c403行でデータベースファイル(14)を開くことができません
0174NAME IS NULL
2011/06/14(火) 00:56:06.64ID:???phpで@sqlite_openで作ったファイルをPupSQLiteで開こうとすると
暗号化されたファイルです。とか出て開くことができませんが、sqlitecc3jだと普通に開けます。
で、PupSQLiteでファイルを作成して、@sqlite_openで読もうとするとエラーになってしまいます。
これはPupSQLiteがあんまり良くなくて、読み込みや保存がうまくできないということでしょうか?
0175NAME IS NULL
2011/06/14(火) 02:02:55.30ID:???0176NAME IS NULL
2011/06/14(火) 04:17:56.13ID:???PHPは詳しくないんだが、確かPHPでのSQLite接続方法は2つあるはず
片方がSQLite2形式でもう片方がSQLite3形式
でPHP製のSQLiteManagerのソースを検索してみたらsqlite_open関数はSQLite2用らしい
SQLiteCC3JはSQLite2とSQLite3に対応していて
PupSQLiteはSQLite3のみに対応しているからそのせいだね
0177NAME IS NULL
2011/06/15(水) 22:20:13.52ID:???しかし、phpの関数を変えてもロリポップはsql3が使えなかったんでsql3使えるレンタルサーバー探してみます。
PupSQLiteは使い勝手がいいんで、こっちに問題がなくて良かったです。
ありがとうございます。
0178NAME IS NULL
2011/06/19(日) 14:29:00.42ID:???トランザクションの前後でflockすればいいのか?
0179NAME IS NULL
2011/06/19(日) 16:07:54.28ID:???そんな必要はない
自動的にロックされる
0180NAME IS NULL
2011/06/19(日) 20:53:01.04ID:8vVW7TIm内包させることを検討しているのですが、何か方法はありませんでしょうか?
ファイルの該当部分をメモリ上に読み込み、それをsqliteのAPIから利用できる形に
することが出来れば良いと思うのですが、具体的な手段が思いつかず…。
(イメージとしては、インメモリDBとして展開/保存、メモリ上のsqliteデータをopen/close、等々...)
なお、ファイルフォーマットは、以下のようなものを考えています。
[独自ファイルヘッダ][独自ファイルデータA][SQLiteデータ][独自ファイルデータB][独自ファイルフッダ]
言語はC、OSはLinuxを考えていますが、将来的にWindowsも視野に入れるかもしれません。
0181NAME IS NULL
2011/06/19(日) 22:31:00.94ID:???0182NAME IS NULL
2011/06/20(月) 08:20:15.17ID:???起動時にSqliteをiin-memoryとして接続し、shema作ってやればいいんじゃないの?
0183180
2011/06/20(月) 19:25:23.30ID:fmQ7dwYyありがとうございます。
RAMディスク上に展開したものを普通にsqlite3_open、ということでしょうか。
対象がRAMディスクが使える環境ばかりでは無いので、別の方法を検討します…。
>>182
ありがとうございます。
アプリケーションでschemaを決め打ちにしておいてインメモリDBを作成し、
ファイルから読み込んだデータをインメモリDBへ流し込む、というイメージでよろしいでしょうか?
ファイルにあるデータをインメモリDBへ展開する手段が想像できないので、
お手数ですが、もう少し詳しく説明していただけると助かります。
0184NAME IS NULL
2011/06/20(月) 19:38:11.53ID:???0185180
2011/06/20(月) 21:03:52.34ID:fmQ7dwYy私の理解力不足で、>>182氏の言っている内容から、
>起動時にSqliteをiin-memoryとして接続し、shema作って
何を「やれば」良いのかが読みとれなかったため、質問させていただきました。
なお、SQLiteデータ格納部分のファイル形式は、何か詳細なイメージがあるわけではなく、
アプリケーションから読み込み、最終的にsqliteのAPIから使用できれば何でも良いと考えています。
0186NAME IS NULL
2011/06/20(月) 21:48:44.68ID:???どうしても内包したいんだったら、起動時に/tmpにでもコピっとけよ
0187NAME IS NULL
2011/06/20(月) 21:52:58.16ID:???Sqlite dbをキャッシュとして使用する発想です。
ファイルの内容をin-memory dbに取り込む。
データの更新は、SqliteのAPIは基本SQLの実行以上のことはできなかったと思う(もしかしたら、ユーザー定義関数を使用すればできるかもしれない)ので、このin-memory dbに対してSQLを発行(insert, update, delete)して行う。
最終的にファイルに保存する際、in-memory dbの内容をselect文で抽出し書き込む。
in-memory dbの作成(接続)は、openする時にファイルパスの代わりにmemoryって文字列を渡せばよかったはず(うろ覚えなのでドキュメントで確かめてね)
0188187
2011/06/20(月) 21:57:32.48ID:???なせわざわさsqliteに取り込むのか?そこを説明してもらえれば、別の解決策を提示できるかもしれません。
0189187
2011/06/20(月) 22:01:52.68ID:???0190NAME IS NULL
2011/06/21(火) 05:28:32.98ID:???まぁ、一回騙されたと思ってサンプルどおりに実装してみなよ
0191180
2011/06/21(火) 19:19:51.52ID:???皆様ありがとうございます。
ファイル内に取り込みたい最大の理由はファイルの互換性です。
過去に作成したアプリケーションにおいて、以下のようなファイルフォーマットを使用しているのですが、
[独自ファイルヘッダ][独自ファイルデータA][独自ファイルデータB][独自ファイルフッダ]
アプリケーションの新バージョンを作るにあたって、内部でSQLiteの使用を検討しており、
データ保存の際にはSQLiteのDBも含めて書き出したいため、以下のようなフォーマットを思いついた次第です。
[独自ファイルヘッダ][独自ファイルデータA][SQLiteデータ][独自ファイルデータB][独自ファイルフッダ]
※過去バージョンの仕様上、新バージョンで書き出したファイルを開く場合は、SQLiteのDB部分を無視し、
その他のデータ部分のみ参照/編集することが可能、保存の際はSQLiteのDB部(というより未定義部分)はそのまま書き出す。
別ファイル展開も選択肢の一つとして考えていないわけでは無いのですが、そこにデータがあるのに同じ物を展開して
再オープン、というのはどうもスマートではない気がするので、直接読み込む方法を模索している、といった状況です。
>>190
過去スレにそういう人がいたとしたら(いたっけ…?)人違いです。すいません。
サンプルとは…?
0192NAME IS NULL
2011/06/21(火) 22:28:50.32ID:fvG5wZhxUZEE
0193NAME IS NULL
2011/06/21(火) 23:57:48.48ID:???センス無いね
そもそも[SQLiteデータ]って何よ?
それに過去バージョンでSQLiteデータとやらを読み飛ばして作業したら、整合が取れないじゃないか
0194NAME IS NULL
2011/06/22(水) 00:25:23.69ID:???>>191読んでやりたい事は分かったが俺には思いつかねえw
本体に手を入れてまんまダンプする関数を増やす、とか... orz
0195NAME IS NULL
2011/06/22(水) 00:57:56.29ID:???2chでセンスを求めちゃイカンw
>アプリケーションから読み込み、最終的にsqliteのAPIから使用できれば何でも良い
ってあるから、そういうデータなんじゃね?w
例えばsqliteファイルをtar玉ごとメモリに読み込んでdbハンドラに繋げるようなイメージをエスパーしてるが正解かは知らんw
>>194補足
↑のイメージならin-memory dbをそのままダンプしてやってファイルに収める仕掛けを実装すれば
いけるんじゃネーノ?とか思ってるけどsqlite.cを読んだことがないヘタレだから出来るのかはワカランorz
0196NAME IS NULL
2011/06/22(水) 01:40:33.29ID:???昔DRHが近いネタをsqlite-usersに書いてたような気がする。
記憶違いだったらすまん。
0197NAME IS NULL
2011/06/22(水) 17:48:46.52ID:???DBサイズが固定なら出来る
サイズが変更されるなら当然無理
0198NAME IS NULL
2011/06/22(水) 17:51:13.07ID:???Linux限定だけど
0199NAME IS NULL
2011/06/22(水) 19:58:32.98ID:???アタッチってできますか?
アタッチはできたみたい(リターン:0)
ですが いざSELECTすると no such table
になってしまいます。。。。
cmd = New SQLiteCommand("ATTACH '" & strdbname & "' AS '" & strname & "'", Me.conn)
cmd.CommandType = CommandType.Text
'SQL実行
intResult = cmd.ExecuteNonQuery()
cmd = New SQLiteCommand
cmd = Me.conn.CreateCommand
cmd.CommandText = "SELECT tablename FROM PDA.tblInfo"
'SQL実行結果をデータセットに格納
Dim adp As SQLiteDataAdapter
adp = New SQLiteDataAdapter(cmd)
エラー→ adp.Fill(ds)
0200NAME IS NULL
2011/06/22(水) 22:21:20.96ID:???0201NAME IS NULL
2011/06/22(水) 22:22:07.45ID:???>>198ね
0202NAME IS NULL
2011/06/22(水) 22:27:07.50ID:???0203NAME IS NULL
2011/06/22(水) 22:28:17.75ID:???ヘッダフッタがあるから問題なくね?
普通にできると思うけど全体で見たら遅すぎて話にならない
0204NAME IS NULL
2011/06/22(水) 22:34:44.79ID:???0205NAME IS NULL
2011/06/23(木) 00:41:08.76ID:???SQLをdumpして保存したらいいよ。圧縮くらいはしたほうがいいかもな
使うときは、:memoryにimportね
0206NAME IS NULL
2011/06/23(木) 19:40:16.74ID:???毎回DB作り直すのかよ
0207NAME IS NULL
2011/06/25(土) 03:25:45.33ID:???普通に独自ファイルデータとやらをSQLiteDBに突っ込めよ糞ウンコちゃん
0208NAME IS NULL
2011/06/25(土) 12:29:25.66ID:???インメモリDBなら当然だろ。
0209NAME IS NULL
2011/06/25(土) 12:30:11.54ID:???頭悪そうw
0210NAME IS NULL
2011/06/25(土) 21:27:06.64ID:???ひとつの方法ではあると思うぞ。
頭悪そうと思った理由書いてくれないかな。
0211NAME IS NULL
2011/06/25(土) 22:50:59.86ID:???俺は209ではないが、
・スレをちゃんと読んでいる場合
→日本語の理解能力が足りない。頭悪そう。
・スレをちゃんと読んでいない
→常識のない人間。頭悪そう。
・いずれの場合でも
→言葉遣いが明らかに頭悪そう。
っていうことだと思うよ。
0212NAME IS NULL
2011/06/25(土) 23:08:30.19ID:???要するに「頭悪そう」って書きたかっただけなのか。
それこそ頭悪そうだなw
0213NAME IS NULL
2011/06/25(土) 23:43:17.66ID:???0214180
2011/06/26(日) 00:22:51.21ID:???近いネタですかー。mail-archiveあたりで探してみようと思います。
ありがとうございます。
>>205-206
DBのサイズが大きい場合の速度は確かに気になりそうですが、
shell.cのdump_*関数を流用するだけで済みそうなので実装は簡単そうですね。
ありがとうございます。
>>207
それが簡単なのは認識しているのですが、前述の通り互換性の問題から
(前バージョンで開けないファイルになる)選択肢には入れていないのです…。
ありがとうございます。
センスと初期設計がまずいのは自覚しております…。
ヒントを沢山いただいたので、この先は自力で頑張ってみます。
皆様色々とありがとうございました。
0215NAME IS NULL
2011/06/26(日) 00:55:38.27ID:???なぜデータまでまとめようとするのか
旧ver→独自ファイルのみ、新ver→独自ファイル+DB
それだけの話じゃねーの?
0216NAME IS NULL
2011/06/26(日) 01:00:51.50ID:???0217NAME IS NULL
2011/06/26(日) 01:29:39.01ID:???意味不明な前方互換にこだわるな
ほんの少し調べりゃdumpが真っ先に見つかるだろボケ
その汚物の様なセンスを人前にさらすな
0218NAME IS NULL
2011/06/26(日) 01:48:18.70ID:???そういう話なのかは知らないけどw
0219NAME IS NULL
2011/06/26(日) 02:17:55.21ID:???言いたい事はわかるが・・・それはどうしても外せない要件ではないだろうし
初期設計どうこう言えないクソ設計としか言いようがない
0220NAME IS NULL
2011/06/26(日) 03:29:30.63ID:???顧客がアホなんだろ。たぶん。
0221NAME IS NULL
2011/06/26(日) 05:24:04.50ID:???と言ってるんだから別に顧客からの要求じゃなくて自己満足によるものだろ
0222NAME IS NULL
2011/06/26(日) 08:36:18.68ID:???でも、他人がとやかく言う話じゃないと思う。
0223NAME IS NULL
2011/06/26(日) 13:21:19.87ID:???0224NAME IS NULL
2011/06/26(日) 19:00:04.17ID:???動機を聞く ってのがまず余計なお世話なんだよな
「お前のためだから」 って態度がむかつくわ
0226NAME IS NULL
2011/06/26(日) 20:31:20.11ID:???1ファイル1データベース
運用方法としては後者が正しいと思いますが、
やたらdbファイルができるシステムを組んでる人がいて、
中身みてみたら1ファイル1テーブルになっていました。
なんか1ファイル1テーブルにする理由とかあるんでしょうか?
0227NAME IS NULL
2011/06/26(日) 21:08:14.58ID:???>やたらdbファイルができるシステムを組んでる人がいて、
>中身みてみたら1ファイル1テーブルになっていました。
>なんか1ファイル1テーブルにする理由とかあるんでしょうか?
その人に聞いてみたらいいんじゃね。
0228NAME IS NULL
2011/06/26(日) 23:03:39.16ID:???あまり平気ではない。
DBが壊れてたりとかは無いけど、パフォーマンスは悪い。
0229NAME IS NULL
2011/06/26(日) 23:49:43.55ID:???>あまり平気ではない。
>DBが壊れてたりとかは無いけど、パフォーマンスは悪い。
ん?「YouTubeやニコ動などのヘビーなサイト」を SQLite
で運用したことあるってことか?
マジなら漢だと思う。
0230NAME IS NULL
2011/06/27(月) 00:20:05.19ID:???あれ?SQLiteってファイル単位で排他制御が行われるんじゃなかったっけ?
0231NAME IS NULL
2011/06/27(月) 01:22:45.67ID:???もしかしてSQLiteがファイルロックってことすら知らないの?
0232NAME IS NULL
2011/06/27(月) 13:40:00.83ID:???0233NAME IS NULL
2011/06/28(火) 15:35:20.60ID:???0234NAME IS NULL
2011/06/29(水) 02:55:09.13ID:???0235NAME IS NULL
2011/06/29(水) 07:59:11.70ID:???0236NAME IS NULL
2011/06/30(木) 06:00:31.88ID:???0237NAME IS NULL
2011/06/30(木) 12:39:52.57ID:???だと状況によっては・・・
0238NAME IS NULL
2011/06/30(木) 18:02:52.64ID:/Ojq8+Ij「expected 32 columns of data but found 40」というエラーが出ます。
どうすればインポート出来ますでしょうか。
ご教授願います。
0239NAME IS NULL
2011/06/30(木) 18:27:34.21ID:???0240NAME IS NULL
2011/06/30(木) 20:34:40.33ID:???0241NAME IS NULL
2011/06/30(木) 21:00:10.06ID:???0242NAME IS NULL
2011/06/30(木) 21:01:10.90ID:???0244NAME IS NULL
2011/07/02(土) 20:46:20.78ID:???楽をする方法はありませんか?
0245NAME IS NULL
2011/07/02(土) 21:09:03.36ID:???コマンドーラインからリダイレクトで流してもいい。
0246NAME IS NULL
2011/07/02(土) 21:22:24.44ID:???0247NAME IS NULL
2011/07/02(土) 21:23:43.16ID:???0248NAME IS NULL
2011/07/02(土) 21:52:13.69ID:???ファイルに入った SQL の実行
.read <ファイル名>
http://www.kkaneko.com/rinkou/sqlite/sqlitecommand.html#eq_4
0249NAME IS NULL
2011/07/05(火) 20:34:20.66ID:???0250NAME IS NULL
2011/07/05(火) 21:02:16.76ID:???test.sqliteというファイルを作ったら、
これはrootでcreate database testをしたということでいいんでしょうか?
それでtest.sqliteに、テーブルを作っていくわけですが、
create table a (
) encoding=utf8 collate utf8_unicode_ci;
みたいのはどうしたらいいんでしょうか?
pragma encoding="UTF-8";
create table a (
);
create table b (
);
のようにやっていき、
SELECT時にも最初に、
pragma encoding="UTF-8";
と入れればいいのでしょうか?
0251NAME IS NULL
2011/07/06(水) 18:00:39.42ID:???プログラム側でしっかりチェックしろっていうことでしょうか?
check(length(col<=10))とか制約いれてもエラーにはならないようですが
11文字以上でも普通に入ってしまいます
0252NAME IS NULL
2011/07/06(水) 23:32:23.92ID:???varcharだのintだのってのはただの飾りですから
■ このスレッドは過去ログ倉庫に格納されています