[過去ログ] スレ立てるまでもない質問はここで 164匹目 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
71(4): 2023/05/06(土)12:09 ID:u7GkjfSc(1/8) AAS
Windows で、sqlite3.exe を起動して、sqlite のコマンドプロンプトにし、
AAA という名前の table が作成済みの時に、そのtableを削除しようかと思って
sqlite> drop table AAA
と打つと、末尾に ; を忘れているので、
sqlite>
という状態になりますが、この時に、やっぱり削除するのをやめようとして
CTRL+C を押すと、sqlite3.exe が終了して cmd.exe に戻ります。
普通なら AAA は消えてないと思いきや、sqlite3.exe を起動して確認してみると、
AAA は消えてしまっています。
つまり、CTRL+C を押しても、drop table がなぜか実行されているということ
省2
72(1): 2023/05/06(土)13:09 ID:ZqhRZXgd(1/2) AAS
drop table AAA
打ち込んだ時点では消えてないの?
73(1): 2023/05/06(土)13:19 ID:u7GkjfSc(2/8) AAS
>>72
; を打ってないので、そもそも文が完結してません。
74: 2023/05/06(土)13:22 ID:u7GkjfSc(3/8) AAS
>>71
「
sqlite> drop table AAA
と打つと、末尾に ; を忘れているので、
...>
という状態になる
」
の間違いでした。...> は、追加パラメータを要求していることを表しています。
75: 2023/05/06(土)13:33 ID:ZqhRZXgd(2/2) AAS
>>73
私素人だから
昔のプログラムは行末に;が必要だったけどいつの間にか無くても問題なくなっていたから
sqliteもそうなのではと思って
76(5): 2023/05/06(土)14:13 ID:wJQin0dX(1) AAS
>>71
CTRL + Cすると
Error: interruptedって表示されてもっかい見ても消えてないけどなー
77: 2023/05/06(土)14:34 ID:WVV5Ig/v(1/2) AAS
Windowsは起動するのが面倒なので憶測だけど
組み込まれてる行編集ライブラリが^Cを終端とみなしてるんだろうね
手元だと^Dで同じ動作になる
78: 2023/05/06(土)15:32 ID:qKnYit7k(1) AAS
これバグっつうか超不親切設計だね
意図的にエラーを発生させるかセッションごと落とすしか抜ける方法がない
79: 2023/05/06(土)15:44 ID:u7GkjfSc(4/8) AAS
>>76
それは、Windows以外の環境ではないですか?
80(2): 2023/05/06(土)16:16 ID:+pku84cF(1) AAS
俺もWindowsでやってみたけど>>76とおんなじ結果だった
81: 2023/05/06(土)16:36 ID:clD7/vG2(1) AAS
今時は行末のセミコロン必須なデータベースの方が少ないぞ
82: 2023/05/06(土)16:49 ID:u7GkjfSc(5/8) AAS
>>80
確認しましたが、やはり、CTRL+C でdrop文が実行されてしまうようです。
select * from XXX
の場合もまったく同様で ; を書いてないので、次行に ...> が出ますが、
そこで CTRL+C を押すと、select 文が実行されて全ての行が表示されました。
83(1): 2023/05/06(土)17:02 ID:4C7CgfSJ(1) AAS
CTRL+Cを誰かが変換してるんじゃね
CTRL+Zも試してみたら?
84(1): 2023/05/06(土)17:10 ID:WVV5Ig/v(2/2) AAS
仮にreadlineつかってるなら.inputrcで設定してるのかもな
なんのことかわからんならせめてバイナリのバージョンと
入手元を書かんとエスパー頼みになる
85: 2023/05/06(土)17:15 ID:u7GkjfSc(6/8) AAS
>>84
cygwin版ではなく、Windows版ですので、.inputrcは関係無いかと。
また、同じフォルダにsqlite3.exe 以外には、2つの*.exeがあるだけの簡単なもの
で、他のファイルは自分が作ったデータベースファイル1つ以外には全く有りません。
86: 2023/05/06(土)17:19 ID:u7GkjfSc(7/8) AAS
バージョンは以下の様になっていました:
C:\sqlite3>sqlite3 --version
3.41.2 2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69cffde2924203304e8ffc41555
97af0c191da
87: 2023/05/06(土)17:21 ID:u7GkjfSc(8/8) AAS
>>83
CTRL+Z や、CTRL+D は、その場に ^D や ^Z と表示されるだけで
即座には反応しません。
Enterキーを押すと反応はします。
88: 2023/05/06(土)17:24 ID:l5Xh2UOq(1) AAS
ここはsqlite3のデバッグスレじゃないので
不具合は公式に報告してください
89: 2023/05/06(土)18:34 ID:JdJwMpUI(1) AAS
少し触ってみたけど>>76のようにinterruptが出て実行されない場合と
何も出ずに実行されてしまう場合がある模様
どちらの場合もコマンドプロンプトには戻る
90(5): 2023/05/06(土)22:21 ID:h3v77DEJ(1) AAS
>>71
chatgptってしたがって好きだな
SQLite のドキュメンテーションによれば、DROP TABLE コマンドが発行された時点でトランザクションが開始されますが、その後に COMMIT もしくは ROLLBACK コマンドを実行するまでトランザクションは未完了のままになります。また、SQLite はトランザクションの自動コミットモードをデフォルトで有効にしており、各 SQL コマンドが実行されるたびに自動的にトランザクションがコミットされます。
したがって、CTRL+C を押すことによって sqlite3.exe を強制終了させた場合でも、SQLite は DROP TABLE コマンドを実行していたと考えられます。また、自動コミットモードが有効であるため、このコマンドは自動的にコミットされ、テーブルが削除されたという結果になります。
したがって、SQLite の動作としては正常であり、DROP TABLE コマンドをキャンセルする場合は、ROLLBACK コマンドを発行する必要があります。また、トランザクションを明示的に開始して、DROP TABLE コマンドを実行することで、コマンドを途中でキャンセルすることができます。
上下前次1-新書関写板覧索設栞歴
あと 912 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.011s