sql >> データベース >  >> RDS >> Mysql

LaravelSailがデフォルトのデータベースを再構築

    ケース-作成済みのDockerボリュームを再利用する

    sail downでSailを停止した場合 、データボリュームは削除されずにDockerホストに残ります。

    Sailが停止している場合は、sail down -vを使用します 既存のDockerボリュームデータを削除します。

    最初のsail up 、DB_DATABASE =forge

    Sailを最初に起動すると、Dockerホスト上にボリュームが作成されます。

    grep DB_DATABASE .env
    DB_DATABASE=forge
    
    docker volume ls
    DRIVER    VOLUME NAME
    
    sail up -d
    Creating network "test_sail" with driver "bridge"
    Creating volume "test_sailmysql" with local driver
    Creating volume "test_sailredis" with local driver
    Creating test_mailhog_1 ... done
    Creating test_mysql_1   ... done
    Creating test_redis_1   ... done
    Creating test_laravel.test_1 ... done
    
    docker volume ls
    DRIVER    VOLUME NAME
    local     test_sailmysql
    local     test_sailredis
    
    sail mysql
    mysql> show databases;
    | forge              |
    

    ただし、Sailを終了すると、Dockerコンテナは削除されますが、ボリュームは削除されません。

    sail down
    Stopping test_laravel.test_1 ... done
    Stopping test_mailhog_1      ... done
    Stopping test_redis_1        ... done
    Stopping test_mysql_1        ... done
    Removing test_laravel.test_1 ... done
    Removing test_mailhog_1      ... done
    Removing test_redis_1        ... done
    Removing test_mysql_1        ... done
    Removing network test_sail
    
    docker volume ls
    DRIVER    VOLUME NAME
    local     test_sailmysql
    local     test_sailredis
    

    2番目のsail up 、DB_DATABASE =test

    同じディレクトリ名で2番目のSailを開始すると、すでに作成されているDockerボリュームが再利用されます。

    grep DB_DATABASE .env
    DB_DATABASE=test
    
    sail up -d
    Creating network "test_sail" with driver "bridge"
    Creating test_mysql_1   ... done
    Creating test_redis_1   ... done
    Creating test_mailhog_1 ... done
    Creating test_laravel.test_1 ... done
    
    docker volume ls
    DRIVER    VOLUME NAME
    local     test_sailmysql
    local     test_sailredis
    

    データはtest_sailmysqlに存在するため 、最初の実行で作成されたボリュームであるため、新しいデータベース作成タスクは実行されません。

    sail mysql
      ERROR 1049 (42000): Unknown database 'test'
    
    sail artisan migrate
      Illuminate\Database\QueryException
      SQLSTATE[HY000] [1049] Unknown database 'test' (SQL: select * from information_schema.tables where table_schema = test and table_name = migrations and table_type = 'BASE TABLE')
    

    既存のボリュームを削除してから開始

    sail down -v
    ...
    Removing volume test_sailmysql
    Removing volume test_sailredis
    
    sail up -d
    ...
    Creating volume "test_sailmysql" with local driver
    Creating volume "test_sailredis" with local driver
    
    sail mysql
    mysql> show databases;
    | test               |
    
    sail artisan migrate
    Migration table created successfully.
    Migrating: 2014_10_12_000000_create_users_table
    Migrated:  2014_10_12_000000_create_users_table (214.30ms)
    Migrating: 2014_10_12_100000_create_password_resets_table
    Migrated:  2014_10_12_100000_create_password_resets_table (99.56ms)
    Migrating: 2019_08_19_000000_create_failed_jobs_table
    Migrated:  2019_08_19_000000_create_failed_jobs_table (151.61ms)
    

    sail down オプション

    sail down -h
    
        -v, --volumes           Remove named volumes declared in the `volumes`
                                section of the Compose file and anonymous volumes
                                attached to containers.
    


    1. PHP警告:PHPスタートアップ:ダイナミックライブラリ'/usr/lib/php/20151012/msqli.so'を読み込めません

    2. 並列プロセスを作成するためのRubyonRailsでのフォークの使用

    3. Django 500内部サーバーエラー-不適切に構成されています:MySQLdbモジュールの読み込み中にエラーが発生しました:

    4. pyodbc.connect()は機能しますが、sqlalchemy.create_engine()。connect()は機能しません