Tag: mysql

为什么Rails(3+)中仍然不支持存储过程?

我熟悉Ruby on Rails,DB(MS)驱动程序和存储过程之间长期以来爱恨交织的关系,我从版本2.3.2开始就开发了Rails应用程序。 然而,每隔一段时间出现一种情况,其中SP只是比(更慢)应用程序级别上的数据组合更好的选择。 具体而言,运行组合来自多个表的数据的报告通常更适合SP。 为什么存储过程仍然很难集成到Rails或MySQL gem中。 我目前正在开发一个使用Rails 3.0.10和MySQL2 gem 0.2.13的项目,但据我所知,即使最新的Edge Rails和MySQL gem 0.3+仍然在使用SP时发脾气。 过去和现在仍然存在的问题是在调用SP后数据库连接丢失。 >> ActiveRecord::Base.connection.execute(“CALL stored_proc”) => # >> ActiveRecord::Base.connection.execute(“CALL stored_proc”) ActiveRecord::StatementInvalid: Mysql::Error: Commands out of sync; […] >> ActiveRecord::Base.connection.active? => false >> ActiveRecord::Base.connection.reconnect! => nil >> ActiveRecord::Base.connection.execute(“CALL proc01”) => # >> ActiveRecord::Base.connection.active? => false 从技术上讲,这是一个非常难以解决的问题,还是Rails的设计选择?

如何使用Rails将长文本存储到MySql数据库?

我试图将一个长文本(在我的情况下是一个原始的RSS源,但也可能是一篇很长的博客文章或类似文件)存储到MySql数据库。 我有一个迁移: change_column :contents, :description, :longtext 但是这给出了一个schema.rb: t.text “description”, :limit => 2147483647 当限制实际上应该设置为4294967295。 为什么Rails施加的上限是应该可能的一半?

在我的Rails项目中使用MariaDB而不是MySQL

如何在我的Rails项目中使用MariaDB而不是MySQL? 当我尝试安装mysql2 gem时,它会返回错误,因为找不到mysqlclient。 这里有一些解决方案 ,但我在openSUSE 12.3上没有找到任何libmariadbd-dev包。

您如何在Rails应用程序的db / model中存储业务时间?

我正在创建一个Rails应用程序,它将存储业务的开始和结束时间。 最初,我想过简单地使用文本数据类型并让它是自由格式: “Monday to Friday 9am to 5pm Saturday 11am to 4pm Closed Sundays” 但是,要求已经改变,我需要根据当前日期和时间检查小时数,并在视图中显示“打开”或“关闭”。 就像是: class Business open_time && Time.now < close_time end end 那么,在存储一周中每一天的工作时间方面,解决这个问题的最佳方法是什么? 业务应该只是具有开放和关闭时间的open_locky:open_blocks(或其他)吗? 我应该把这一天存储为字符串吗?

Rails 3使用连接选择SQL查询

我有选择fonction和join的问题。 这是我目前的查询。 @search = Building.joins(‘INNER JOIN “floors” ON “floors”.”building_id” = “buildings”.”id” INNER JOIN “spaces” ON “spaces”.floor_id = “floors”.id’) 但我希望在我的选择中有更多选项使用floors.number,space.number我试过这个 @search = Building.select(‘buildings.name, floors.number, spaces.number).joins(‘INNER JOIN “floors” ON “floors”.”building_id” = “buildings”.”id” INNER JOIN “spaces” ON “spaces”.floor_id = “floors”.id’) 在我看来,我得到了错误..这是我的看法 这是我得到的错误 ActionController::RoutingError in Search_engine#show Showing /Users/stephanebaribeau/Sites/cadifice/app/views/search_engine/show.html.erb where line #21 raised: No route matches {:action=>”show”, :controller=>”buildings”, :id=>#} Extracted […]

如何在rails中的表列中保留哈希值

我对rails很新。 我有一张表,包含所有用户的基本信息,如 用户(id,name,email)现在我试图将这些用户的一些其他信息保存在一个单独的表中 user_details(ID,USER_ID,ADDITIONAL_INFO) 我创建了这个user_details表。 现在我尝试保留一些默认记录以供检查。 如何在additional_info中保留用户附加详细信息的哈希值,就像我的附加详细信息是User_details表的additional_info列中的用户(名称,工资,prjtname)一样。 另外,我必须为User_details表的additional_info列提供什么数据类型 。 请提一些建议..

db:schema:load vs db:使用capistrano迁移

我有一个rails应用程序,我正在移动到另一台服务器,我想我应该使用db:schema:load来创建mysql数据库,因为它是推荐的。 我的问题是我正在使用capistrano进行部署,而似乎默认为rake db:migrate。 有没有办法改变这个或使用db:migrate的capistrano有充分理由?

Rails:显示数据库中blob字段的图像

所以,我设法将一个图像blob放到我的MySQL数据库中(该字段中有一个大的hex数字),但我找不到任何关于如何在rails环境中显示图像的文档…当它打印出来时,它从一个GIF89开始…然后当你在记事本中打开它时,你在GIF中看到的gobbledygook字符。 :P任何线索将不胜感激! 谢谢。

存储过程中非法混合的排序规则

MySQL中的存储过程失败,出现Mysql::Error: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation ‘=’ 。 在SELECT子句中,它尝试将VARCHAR列与传递给此过程的VARCHAR参数进行比较时,该过程失败。 我表中的所有列都有utf8_unicode_ci排序规则。 数据库整理是一样的。 我甚至在`/config/database.yml中指定了排序规则。 但是,当我运行/script/console我设置了以下变量: >> ActiveRecord::Base.connection.select_rows “show variables like ‘%colla%'” => [[“collation_connection”, “utf8_general_ci”], [“collation_database”, “utf8_unicode_ci”], [“collation_server”, “utf8_general_ci”]] 可能最有趣的事实是我在相同的MySQL服务器上有另一个数据库具有相同的排序规则(甚至从Rails控制台查询排序规则变量给出相同的结果),它运行这个存储过程没有任何问题。 谢谢你的帮助。

db:种子不加载模型

我正在尝试使用标准db/seeds.rb方法为我的数据库设定种子。 这在我的开发机器上工作正常,但在我的服务器上,我得到: $ sudo rake db:seed RAILS_ENV=production –trace ** Invoke db:seed (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:seed rake aborted! uninitialized constant Permission /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing’ /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.4/lib/active_support/dependencies.rb:92:in `const_missing’ /path/…/…/…/…/db/seeds.rb:4 /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:215:in `load’ /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.4/lib/tasks/databases.rake:215 /usr/local/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call’ … 但是当我在控制台中检查时,模型确实存在: $ script/console production Loading production environment (Rails 2.3.4) >> Permission => Permission(id: integer, …, created_at: datetime, […]