今回もハンドメイド雑務のサポート兼、転職に向けた成果物として、ハンドメイドサポートアプリ制作の様子をご紹介します。
今回はSQLite3を使用してアプリケーションを開発している際、
POSTリクエストが失敗し、データベースに正しくデータが保存されないという問題に直面しました。
この問題にどう対処したか、勘違いしていたかを解説し、同じ問題に悩む方の参考になればと思います。
結論から言いますと
- ディレクトリの誤り
- コメントアウト操作で原因箇所のチェック
- キャッシュクリアを実施
で問題は解決しました。
目次
SQLite3のコマンド「.table」が使えない?
例えば商品の仕入れ先・単価・在庫情報を保存して、いつでも呼び出せるようにできるための機能を実装したいとき、SQlite3を使います。
そしてSQLite3を使用していると、コマンドが正しく動作しないことがあります。
例えば、.table
コマンドでテーブルが表示されない、またはPOSTリクエストが失敗するというエラーです。
これらの問題は、ディレクトリやキャッシュの問題によって引き起こされることが多いです。
ディレクトリのチェック方法
SQLite3は、データベースファイルのあるディレクトリに移動して実行しないと正しく機能しない場合があることがわかりました。
例えば、コマンドを実行してもテーブルが表示されなかったり、データが正しく保存されなかったりすることがあります。
ディレクトリの確認と移動方法
- SQLite3のデータベースファイルが保存されているディレクトリに移動します。
- SQLite3シェルを起動し、
.table
コマンドを使用して、テーブルが正しく表示されるか確認します。 - もしテーブルが表示されない場合、データベースファイルの場所が間違っている可能性があるため、ファイルのパスを再確認します。
私の場合だと、instanceというディレクトリの中にdbファイルが保存されています。
よってコマンドラインで
- cd instance で場所を移動してから
- sqlite3 materials.db を実行し
- .table を実行する。すると
きちんとコマンドを受け付けてくれました。
ちゃんとテーブルは作られていることが確認できました。
ではなぜ、テーブルがきちんと用意されているのデータベースに情報が渡せないのでしょう。
ここに至るまでに私はデータベースのカラム名を変えています。
これが原因であることは気づいていたのですが、コードは修正済みなので、なぜ動かないのか?
と悩んでいました。
ディレクトリの正しい設定とカラムのコメントアウト
問題のあるカラムが原因でエラーが発生している場合、
該当するカラムを一時的にコメントアウトして、どのカラムが問題を持っているかをチェックしてみることにしました。
この操作によって、問題が解決することがあります。
私の場合はなぜか、コメントアウトを実施したら、正常に動くようになりました。
これはおそらく溜まったキャッシュに問題があったようです。
キャッシュのクリア方法
特に、ブラウザや開発環境では、古いデータがキャッシュに残っていることで、意図しない動作を引き起こすことがあります。
つまり私の場合、何度もコードを編集しているうちにキャッシュが溜まっていって、コードを書き換えても、それが反映されていない状態ということだったのでしょう。
各ブラウザでのキャッシュクリア方法
- Google Chrome:
- ショートカット:
Ctrl + Shift + Delete
(Windows)またはCommand + Shift + Delete
(Mac) - 手動: メニュー → 「設定」→ 「プライバシーとセキュリティ」→ 「閲覧履歴データの削除」→ 「キャッシュされた画像とファイル」を選択し、削除。
- ショートカット:
- Firefox:
- ショートカット:
Ctrl + Shift + Delete
(Windows)またはCommand + Shift + Delete
(Mac) - 手動: メニュー → 「設定」→ 「プライバシーとセキュリティ」→ 「クッキーとサイトデータ」→ 「データを削除」。
- ショートカット:
- Safari:
- ショートカット:
Command + Option + E
- 手動: Safariメニュー → 「環境設定」→ 「詳細」タブ → 「メニューバーに”開発”メニューを表示」をチェック → メニューの「開発」→ 「キャッシュを空にする」を選択。
- ショートカット:
- Microsoft Edge:
- ショートカット:
Ctrl + Shift + Delete
- 手動: メニュー → 「設定」→ 「プライバシー、検索、サービス」→ 「閲覧データをクリア」→ 「キャッシュされた画像とファイル」を選択し、削除。
- ショートカット:
自分がしていた誤解
私はキャッシュをクリアしていたつもりでしたが、
実際には一部のデータが残っていた可能性があります。
今後はCommand + Shift + Delete
(Mac) を活用したいと思います。
特に、キャッシュされた画像やスクリプトが原因で問題が発生していることが多いため、完全にクリアすることが重要です。
コマンドパレットを使用したVS Codeでのキャッシュリフレッシュ
VS Codeでもキャッシュが問題を引き起こすことがあるようなので、こちらも方法を記しておきます。
以下の手順でキャッシュをリフレッシュすることができます。
- VS Codeを開きます。
- キーボードショートカットを使用:
- macOS:
Cmd + Shift + P
- Windows/Linux:
Ctrl + Shift + P
- macOS:
- コマンドパレットが表示されたら、「Developer: Reload Window」と入力し、エンターキーを押します。
これでウィンドウがリロードされ、キャッシュがリフレッシュされます。
まとめ
SQLite3でPOSTリクエストが失敗する場合、
- ディレクトリのチェック場所を間違えている
- キャッシュのクリア
が問題解決の鍵となることがわかりました。
ディレクトリの設定が正しいことを確認し、必要に応じてカラムのコメントアウトを試すこと、そしてキャッシュが原因であればブラウザやVS Codeでキャッシュをクリアすることで、正常に動作するようになります。
私も引き続きアプリ制作を進めていきたいと思います。
自己紹介
pekopokoです。プロフィールページはこちら
普段はハンドメイド作品をオンラインで販売しています。
メタバース空間に視覚的なお店を自分で構えることを目標に現在プログラミングも学習中です。
作品はオンラインショップでご覧いただけます。
物作りで日常を明るく♪をコンセプトに活動中のハンドメイド作家です。minneやメルカリショップス 、Creemaにてマクラメ・レザーブレスレットなどを中心に出品中です。
コメント