カテゴリー
コンピューター

Laravel6。 SQLite での URL を使用したデータベース設定の癖を整理

まとめ

  • URLを使用したデータベース設定 データベース:利用開始 6.0 Laravel
  • DB_CONNECTION は指定した方が無難。指定しなくとも SQLite へ接続できたが、 DB_CONNECTION はデフォルト (特に設定ファイルを編集していない場合は mysql となる) となる。
  • SQLite の場合のデータベース URL のスキーマ: driver:///database?options 。具体的な例: sqlite:////absolute/path/to/database.sqlite?foreign_key_constraints=true
カテゴリー
Linux

Laravel 5.8。インメモリの SQLite で PHPUnit テストを行う設定

設定まとめ

  • config/database.php の 'driver' => 'sqlite' の database の値として :memory: を指定する。
  • phpunit.xml の env に name="DB_CONNECTION" value="sqlite" を追加する。
カテゴリー
Linux

Laravel 5.8 。 migrate が MySQL の場合は問題ないのに SQLite では失敗する現象の原因と修正

対処方法まとめ

  • マイグレーションファイルにて、メソッドチェーンで絡むの後にインデックスをつなげる場合は、インデックスのメソッドの引数を指定しない。
  • 例えば、 $table->string('meta_key')->nullable()->index('meta_key'); ではなくて、 $table->string('meta_key')->nullable()->index(); とする。
カテゴリー
コンピューター

【Android】日付を扱う Java と SQLite の考え方を整理

Android アプリ開発で、SQLite を使って日時を扱う時のポイント

  • SQLite には日時を扱う型が無い。
  • Android アプリでは 1970年1月1日 00:00:00.0 UTC からのミリ秒(Unix タイムのミリ秒)で日時を扱うことにする。
  • UNIX タイムのミリ秒を INTEGER 型で挿入することにより SQLite で日時を扱う。(たとえばの方法。他にも考えられる。)
  • Java で現在日時取得には、System.currentTimeMillis() を使用する。
  • Java の Date クラス、SimpleDateFormat クラスなどで日時を扱う。
  • 開発時にミリ秒の日時を得るのに便利なページ(「unix time」で検索して見つけた)
    → UNIXTIME相互変換ツール – konisimple

これがベストプラクティスかどうかはわかりません!今のところこれでアプリ制作が実現できている、という状態です。

大量のデータの挿入や検索時に問題が発生するかもしれません!けれども、ある程度綺麗に日時を扱えている感覚がございますのでメモしておきますわ♪

具体的な使い方

カテゴリー
コンピューター

【Android Studio】adb コマンドでアプリの DB を直接見る方法

エミュレーターの中に入って、adb コマンドでアプリ内の SQLite データベースの中身を直接見る方法

  1. Android SDK のディレクトリを調べる。
    Android Studio の上部メニュー File > Project Structure… の Android SDK location
  2. cd Android SDK のディレクトリ/platform-tools で移動
  3. ./adb shell でエミュレーターの中に入る。
  4. cd /data/data/com.example.project/databases でデータベースのある場所に移動。com.example はパッケージ名の逆、project はプロジェクト名。
  5. sqlite3 dbname.db でアプリ内の SQLite データベースに入る。dbname.db はアプリ製作者が決めた DB 名。ls で非レクトリを調べれば名前がわかる。

なお、エミュレーターから出るには、exit または control + d です。

SQLite にログインしてからよく打つコマンド