SQLite初心者::間違った時にやり直すには|構文エラー|確定|データベース|悟りの境地
少し時間がありデータベースについて、試すことが出来たので覚書しています。
Windowsの場合です。自分と同様あまり詳しくない人に、参考になりましたら幸いです。
目次 |
1: 間違った時のやり直し方法|確定させないと消えてしまう
いきなり、間違った時のやり直し法です。
- 「;」と入力してエラーで終了。
- 「.exit」や「.quit」と入力してやり直す
- 削除する:「Drop table IF EXISTS table_name; 」・・と、すればテーブルが消えます。
参考::
- 「元に戻す」にはバックアップが必須
- バックアップ取得した時間以降のデータを戻すには,バイナリログが必要
「.quit」について、データベースを抜ける時に使うとのことです。
間違って「quit」で、抜けられない場合も「;」でエラーにして終わらせるといいそうです。
追加・更新する方法|確定させないと消える
sqlite> update test_list set koumoku = ’syuusei ’ where id =’3’;
の様にします(スペースは全部半角にして下さい)。
内訳は・・
update テーブル名 set 修正したい項目名 = ’修正後の名前’ where id(name でも何でも良いのでリストの中でどれか分かるもの)=’idの場合は数字ですが、「’」をつけると反映されました’;
ここまでが、何となく出来たことのメモですが・・「確定させるには commit」が必須で、
しないと消えてしまいました。。
確定させるには
消えない様に保護(確定)するには、
修正したい箇所を
- 「BEGIN TRANSACTION;」と
- 「COMMIT;」で挟みます。
大事なことなので取り急ぎメモしましたが、また、後から見易く編集・追記します。
参考:データが消えた例
この場合、どっちが使用中か分からないと確認がとても面倒なので「環境変数」を指定するなどしておけば良いです。
方法は、さっき理解したところでいっぱいいっぱいのため、あとで別記事を作成します。
あと似たような・関連の案件ですけど。。
使ったことのない方のアプリケーションで「dbファイルをオープン」したつもりでいると、
「○○;」という名前のテキストファイルが新規作成されてしまい、
中身は空っぽなので「データが全部消えたー!!」
「変なファイルが出来ている、乗っ取りかー?」と、思って焦った事があります。
ほか、「;」を忘れていると動かない場合もありますが、最初から「;」が不要な場合もあるので忘れやすいです。
上記の複合した技が非常にやっかいです。参考までに。。
2: 「...>」で、困った件について
「 ...>」の解決法(初心者)
訂正したものを送ってみると反応がありました。
そしたら、エラーメッセージ「 error here ---^」、
そのメッセージの通りに直したら普通の状態に戻りました。
「普通の状態」とは、
「 sqlite> 」という表示で入力できる状態です。
自分と同じ位よく分からない人が検索する場合は・・状況説明も難しく専門用語も分からずに勘違いも多々あり
おそらく適切な言葉が使えないので、以下のような感じの小学生の感想文みたいな文で
かくいう自分は、検索では全く見付からずAIに説明するのにコピペするのが嫌だったので、自己解決しましたが・・。
参考:困った事例:「...>」で戻れないとき:
- 「 ’ ...>」で、何を入力しても同じ反応で、進まなくなりました。
- 「;」でも動かない(通常はエラーで終了になる筈)、また「 ’ ...>」
- 「.exit」でも、また「 ’ ...>」になるだけ
- よく見ると自分の入力で「 ’」が抜けていたので、
- 「 ' ...>」へ、「 '」と送ると、今度は「 (x1...> ''」
- 次は、「;」と送るとエラーメッセージが表示されました。ここからは上記のように戻れました。
- 何度か「;」や「 ’」を入力してenterをすれば、エラーで終了できるかと(初心者の悟りの境地)。
3: 思ったこと|参考:構文エラー
"INTEGER": syntax error
で、原因がなかなか分からずでしたが。。。
ここでは普通のよくあるエラーではなく自分のパターンのみ残します(初心者につき・・)
目的がリストだったのですが、先ず、作ったテーブルが以下です(例1)。
CREATE TABLE IF NOT EXISTS mihon_list ( id INTEGER PRIMARY KEY, name TEXT, date INTEGER, mail TEXT );
というテーブルを作った場合、データを追加するのに
INSERT INTO mihon_list (name, date, mail) VALUES ('botto', '19990817', 'tehon@email.com'), ('sara', '20010531', 'mihon@email.com');
以下の様にテーブル作成の時の項目と全く同じものを以下のように付けてエラーになりました。
・・が、それは余分だったみたいです(そのことに気付くのも少し時間がかかり無駄に調べました)。
上記ともう1つのパターン(下の方に置いときます)だと出来ました。
エラー参考:多過ぎた例
INSERT INTO mihon_list (id INTEGER PRIMARY KEY,name TEXT,date INTEGER,mail TEXT) VALUES ('botto', 'tehon@email.com', '19990817'), ('sara', 'mihon@email.com', '20010531');
成功した例:参考:
INSERT INTO mihon_list VALUES (1,'botto', 'tehon@email.com', '19990817'), (2,'sara', 'mihon@email.com', '20010531');
なので、似たような内容の入力例を2~3つ見てからデータを追加すると良いのではないかと。。
後日、またエラーの話ですが、新しくデータを入力したものの確定用の呪文を入れ忘れたので後から入力しようとしたら、
「もう同じのがあるよ」っていうエラーみたいですが・・また一旦閉じてからの入力しないといけない様です。
「error: UNIQUE constraint failed: テーブル名 id(19)」
検索すると結構たくさんの情報がありました。自分は原因は分かっていたのですが、念のため。。
4: 基本の話も少し|わからない原因
普通はソフトをダウンロードして、マウスで操作出来るものが人気だそうですが・・
DB Browser for SQLite - https://sqlitebrowser.org/dl/ ーーここです。リンク貼りませんが。
(PCの負荷が少ないので、パソコンの寿命が長くなるのが一番の狙いですけど。。)
コマンド使う場合、先ず大きな流れだけ初心者向けに。
- 最初にdb(データベース)を作る
- テーブルを作る
- データを入力していく
- 沢山入力出来たら、好きな項目で絞って確認ができる。
多分、書類作成と同じで、いくつかの見本を見ながら行うのが覚え・分かりやすいですけど、
普通の手順の説明では1つの例で進むので分かり難い気がしました。。
分からない原因:
特にコマンドの入力では「user」「test」などは余計に分かりにくくなると実感した事が大きいです。
名前に、ユーザーとかテストを使うと固有名詞(データの名前など)っぽくないので、状態を説明する言葉(形容詞や修飾的な言葉)に思えてしまい、「テスト」と出てくれば「本番(main)」があるのかと探したりします。
5: 言葉の意味|参考・終わり
これだけでもう大分楽な感じですね。
機会があったら使ってみたい物(マークダウン)の覚書メモです。
テキスト内もマークダウン記法をしたい範囲にタグを入れて使いましたが、後からややこしくなったので止めました。
(元々のhtmlタグを使いたくなっても、マークダウン記法の部分と上手いことリンク出来なくて難しかったので)
[markdownファイルの開き方](#markdownファイルの開き方) マークダウン形式の実験中ーーーあっという間に止めました。
参考:SQLite manager for Windows|markdown|
[書類ファイル]:https://blogger.googleusercontent.com/img/b/~~~~~~3%ABno-to.png
という書き方で画像が表示されていました。
後で役に立ちそうなので引用しています
#### SQLiteManagerの使い方 ----こうすると、結構小さい字になります。
htmlで言うところの<!-- -->みたいな感じです。
任意のディレクトリにアップロードするだけで導入可。.htaccessとかで認証はかけておいたほうが良さそう。
文字化けする場合は「./lang/japanese.inc.php」ファイルの10行目当たりにある文字コードを以下の通り書き換える必要あり。
#変更前:euc-jp、ja-euc
#変更後 utf-8
「```」← これもマークダウン記法 [SQLiteManager]
ここまで読んで頂きありがとうございました。
良かったら気が向いた時にでもまた覗いてやってくださいませ。
参考サイト:
SQLiteのクォートにまつわる奇妙な仕様/徳丸浩の日記 /https://blog.tokumaru.org/2017/03/sqlite-strange-quoting.html
Qiita https://qiita.com › mifumi323 › items › 9ba2ab9ab3791f8b789e SQLiteで改行コード #SQLite3 - Qiita
MySQLのコマンドラインで入力をキャンセルする_/https://qiita.com/ysti/items/b4a84691c357167c89c2
DB Browser for SQLite - https://sqlitebrowser.org/dl/ ---マウス操作の出来る人気のソフトがダウンロードできます。
iifx.dev https://iifx.dev › ja › articles › 104074461 エラー解析のプロ、俺がSQLiteの謎を解き明かす!
https://qiita.com › peq_4 › items › e145a8b36c0fe2f1d06a Sqlite3 create table で syntax error が出た時に見てほしい - Qiita
Qiita https://qiita.com › gyu_outputs › items › 508a06125555d1f84ef5 sqlite> quit として終了できない #PHP - Qiita
iifx.dev https://iifx.dev › ja › articles › 133223761 バーベキュー流SQLite活用術:改行文字の挿入と表示トラブル ..
マークダウン(Markdown)記法完全チートシート
https://qiita.com/masterpiecehack/items/990683b706b70b88b4c7
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13289035453
phpliteadmin.blogspot.com
コメント
コメントを投稿
読んでくださって、ありがとうございます。お気軽にコメントして頂けると嬉しいです。返事は90%くらいお返ししますが、めちゃくちゃ遅い場合があります。気長にお待ちください。