Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Ruby on Rails在Heroku上部署MySQL数据库_Ruby On Rails_Heroku_Mysql2 - Fatal编程技术网

Ruby on rails 使用Ruby on Rails在Heroku上部署MySQL数据库

Ruby on rails 使用Ruby on Rails在Heroku上部署MySQL数据库,ruby-on-rails,heroku,mysql2,Ruby On Rails,Heroku,Mysql2,我正在尝试在Heroku上部署Rails项目。我的Rails应用程序使用mysql2 我尝试过使用轻触gem,但它不起作用。当我运行命令taps server时,出现以下错误mysql://root@localhost/heroku_ex tempuser tempass: 无法连接到数据库:Sequel::AdapterNotFound->LoadError:无法加载此类文件--mysql 有没有办法在Heroku上部署我的应用程序?如果可能的话,我宁愿只使用免费的附加组件。这里有一些活动部件

我正在尝试在Heroku上部署Rails项目。我的Rails应用程序使用
mysql2

我尝试过使用
轻触
gem,但它不起作用。当我运行命令
taps server时,出现以下错误mysql://root@localhost/heroku_ex tempuser tempass

无法连接到数据库:Sequel::AdapterNotFound->LoadError:无法加载此类文件--mysql


有没有办法在Heroku上部署我的应用程序?如果可能的话,我宁愿只使用免费的附加组件。

这里有一些活动部件

首先,Heroku默认不支持MySQL。如果您想使用MySQL而不是PostgreSQL,则必须提供一个配置。目前至少有两个附加组件提供MySQL或MariaDBª支持,并提供免费的tier²

接下来,Heroku不会在
localhost
上运行数据库服务器。如何处理开发机器和Heroku服务器之间的不同数据库配置

一种策略是在环境中存储配置。遵循此模型,您可以通过修改环境变量而不是编辑文件来更改应用程序的配置。幸运的是,Rails似乎很适合,所以这种方法应该很适合

数据库加载项通常会自动为您设置环境变量。比如,。这不是Rails要查找的变量,因此您必须告诉Rails查找
JAWSDB\u MARIA\u URL
而不是
DATABASE\u URL
,或者手动设置
DATABASE\u URL
以包含JAWSDB在
JAWSDB\u MARIA\u URL
中提供的相同URL


MariaDB是MySQL的一个分支,旨在实现完全兼容


²请注意,可用层可能非常有限,例如仅提供5MB存储。在继续开发应用程序时,您可能必须升级到付费数据库层。

我通过在生产环境中添加pg gem和在开发环境中添加mysql2解决了这个问题

group :development, :test do
 gem 'mysql2'
end

group :production do
 gem 'listen', '~> 3.0.5'
 gem 'pg'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
 gem 'spring'
 gem 'spring-watcher-listen', '~> 2.0.0'
end

您需要将db更改为postgres@DeepakMahakale那不是真的。Heroku支持开箱即用的PostgreSQL,但它也通过附加组件支持其他数据库。“它不工作”是什么意思?你收到错误消息了吗?@Chris,我收到错误消息:无法连接到数据库:Sequel::AdapterNotFound->LoadError:运行命令时无法加载这样的文件--mysql:taps servermysql://root@localhost/heroku_ex tempusertempass@Harshini,您肯定不会在
localhost
上运行MySQL服务器,并且您不会以
根用户身份连接到它。您是从环境变量加载数据库连接信息,还是硬编码的?使用一个数据库引擎开发(和测试!)并部署到完全不同的数据库引擎是一个非常糟糕的主意。您几乎肯定会在每个环境中遇到其他环境中没有出现的问题。我强烈建议您要么在Heroku上使用MySQL(如我所述),要么切换到PostgreSQL进行开发和测试。