31

rake db:setupを実行する前にデータベースがレールに存在するかどうかを確認する方法は?

db:create が行われる前に、データベースが既に存在するかどうかを確認したいと思います。これまでレールで特定の方法を見たことはありませんが、これはmysqlスクリプトを使用して実行できることを知っています

4

8 に答える 8

29

データベースがすでに存在するかどうかを確認する方法は次のとおりです。

def database_exists?
  ActiveRecord::Base.connection
rescue ActiveRecord::NoDatabaseError
  false
else
  true
end

参考文献

于 2014-08-31T13:43:22.303 に答える
8

この目的のために作成したいくつかの bash スクリプトを次に示します。

ポストグル

if echo "\c $PGDATABASE; \dt" | psql | grep schema_migrations 2>&1 >/dev/null
then
   bundle exec rake db:migrate
else
   bundle exec rake db:setup
fi

Mysql

 if echo "use $MYSQLDATABASE; show tables" | mysql | grep schema_migrations 2>&1 > /dev/null
 then
     bundle exec rake db:migrate
 else
     bundle exec rake db:setup
 fi

schema_migrationsこれらは、テーブルの存在をチェックして、rake db:setup以前に実行されたかどうかを判断します。

于 2014-04-15T04:46:26.897 に答える
0

DBの状態を確認するために使用するものは次のとおりです。

if db_version=$(bundle exec rake db:version 2>/dev/null)
then
    if [ "$db_version" = "Current version: 0" ]; then
        echo "DB is empty"
    else
        echo "DB exists"
    fi
else
    echo "DB does not exist"
fi
于 2019-11-26T08:52:55.530 に答える