在进行rake db: install之前,如何检查数据库是否存在于rails中?
我想在db:create完成之前检查数据库是否已经存在。到目前为止,我还没有在rails中看到具体的方法,但是我知道使用mysql脚本可以做到这一点
您还可以指望这样一个事实,即如果数据库尚不存在,rake db:在数据库中迁移:状态
会返回错误。
我在我的脚本中使用了这样的东西:
(rake db:migrate:status 2>/dev/null || rake db:setup) && rake db:migrate
(灵感来自[企鹅编码器]
我做了一个rake任务,扩展了之前的一些答案。我在一个浮动Docker设置中经常使用这个,所以我可以非常容易地发出一个命令,创建一个新的数据库或者发出一个迁移到当前数据库的命令。我使用分支数据库范式进行开发。我经常需要植入一个新的数据库或者更新我现有的数据库。
在lib/tasks/db_exists.rake中:
namespace :db do
desc "Checks to see if the database exists"
task :exists do
begin
Rake::Task['environment'].invoke
ActiveRecord::Base.connection
rescue
exit 1
else
exit 0
end
end
end
现在我可以运行一个简单的bash命令:
rake db:exists && rake db:migrate || rake db:setup
然后我将它进一步自动化成一个Makefile(为简洁起见进行了裁剪):
.PHONY database
database:
rake db:exists && rake db:migrate || rake db:setup
转化为:
make database
满足我所有的本地数据库需求。
以下是检查数据库是否已经存在的方法:
def database_exists?
ActiveRecord::Base.connection
rescue ActiveRecord::NoDatabaseError
false
else
true
end
引用
问题内容: 建立连接后是否可以检查(MySQL)数据库是否存在。 我知道如何检查数据库中是否存在表,但是我需要检查数据库是否存在。如果没有,我必须调用另一段代码来创建它并填充它。 我知道所有这些听起来都不太优雅-这是一个快速又肮脏的应用程序。 问题答案: 如果您只想知道数据库是否存在,以免在尝试创建数据库时出错,只需使用(From here):
问题内容: 我正在将实时数据库与Google的Firebase结合使用,并且正在尝试检查是否存在孩子。 我的数据库结构如下 我想检查room1是否存在。我尝试了以下方法: 在访问它时,返回该房间属性的JSON,但是我如何检查room()是否从那里开始呢? 评论是否需要任何澄清 问题答案:
问题内容: 我已经在互联网上搜索了几天,但找不到仅使用ODBC和SQL来解决此问题的通用方法。 有没有办法查看数据库是否已经存在,只能使用 ODBC 。它必须是标准SQL,因为用户可以选择自己选择的DSN(意味着他自己的SQL Server)。 这意味着我无法检查服务器上的主表,因为在不同的SQL服务器上它们的名称不同。 谢谢。 问题答案: 不知道这是否为时已晚,或者对于您来说足够“便携”。 我只
问题内容: 我正在尝试制作简单的Java代码,以检查MySQL DB中是否存在表和/或列。我应该使用Java代码进行检查还是生成一个SQL查询字符串并执行以进行检查? 编辑- @ aleroot- 我尝试使用您的代码,如下所示。运行以下代码时,我看不到任何表或列。我只看到这个 我的数据库有很多数据库,表和列。我不知道为什么该程序可以正常工作。 问题答案: 要检查表是否存在,可以按以下方式使用Dat
问题内容: 我是通过Android(Java)刚接触Firebase的,并且想知道如何检查用户是否已存在以下格式的数据库中: 例如,按下按钮后,我想检查Firebase以查看用户名“ Michael”是否存在(对象michael中的第一级michael-而不是“ michael”。 谢谢 问题答案: 使用方法或onDataChange中的SingleValueEvent
问题内容: 我想知道如何检查数据库中的特定表(例如:myTable)中是否存在特定列(例如:日期)。 我已经阅读了此答案,该答案提供了一个查询,该查询导致另一个查询。 但是我需要的是结果。 更新1 如何在C#应用程序中做到这一点? 也许使用或其他? 问题答案: 感谢所有提供解决方案并收集了一些答案的人,我提出了自己的解决方案版本。也许这不是最好的解决方案,但是至少我不需要额外的dll来添加引用或处