Tag: mysql

根据日期字段查询日期时间字段的最佳方法是什么?

我只是想知道当你有一个datetime字段时你们正在做什么,即: Game.first.starts_at => Thu, 03 Dec 2009 20:20:00 EST -05:00 并且您想要根据日期字段查询它: 3.days.from_now.to_date.to_s(:分贝) =>“2009-12-03” 目前我通过使用BETWEEN运算符来完成这项工作,但我想知道更多方法来解决这个问题。 提前致谢。

使用SQL检索一组记录,然后使用Rails对它们进行排序

使用Rails 3.2和MariaDB。 我的表有500,000行。 在通常的查询中,我们将在其中添加order子句,如下所示: # takes 4000ms to load, returns 100 records @shops = Shop.where(:shop_type => ‘fashion’).order(‘overall_rating DESC’) 如果我们删除order ,则加载时间会大大减少: # takes 20ms to load, returns 100 records @shops = Shop.where(:shop_type => ‘fashion’) 是否可以首先检索@shops 100记录,然后使用Rails通过overall_rating DESC对它们进行overall_rating DESC而不涉及SQL? 或者,将查询分为两部分:首先检索100条记录,然后订购该组记录。 这可以大大提高性能。

Rails如何构建MySQL语句?

我有以下代码在一个控制器内的heroku上运行, 间歇性地失败。 它应该对我很有用,但我必须遗漏一些东西。 @artist = Artist.find(params[:artist_id]) 参数hash看起来像这样: {“utf8″=>” “, “authenticity_token”=>”XXXXXXXXXXXXXXX”, “password”=>”[FILTERED]”, “commit”=>”Download”, “action”=>”show”, “controller”=>”albums”, “artist_id”=>”62”, “id”=>”157”} 我得到的错误看起来像这样: ActiveRecord::StatementInvalid: Mysql::Error: : SELECT `artists`.* FROM `artists` WHERE `artists`.`id` = ? LIMIT 1 注意WHERE艺术家. id = ? 声明的一部分? 它试图找到问号的ID。 含义Rails没有传入params[:artist_id] ,这显然是在params哈希中。 我完全失去了。 我在尝试以类似方式选择记录的不同页面上得到相同的错误。 我的环境:Heroku上的Cedar Stack( 这只发生在Heroku上),Ruby 1.9.3,Rails 3.2.8,托管在Amazon S3上的文件(虽然我怀疑它很重要),使用mysql gem(不是mysql2 ,它没有’完全工作),ClearDB MySQL数据库。 这是完整的痕迹 。 任何帮助将非常感激。

活动记录插入

我试图让我的Rails应用程序在创建关系方面有一些高级function。 我正在运行MySQL作为后端。 下面的查询在PHPMyAdmin中运行得很好,但是在rails中尝试执行时,它什么都不做,没有错误,没有数据库写入…. 我使用活动记录来创建Campaign和Location之间的关系,然后下面的查询应该在campaign_metros表中构建: class CampaignLocation < ActiveRecord::Base belongs_to :campaign belongs_to :location after_touch :create_campaign_metro private def create_campaign_metro @sql_insert="INSERT INTO `campaign_metros` (`campaign_id`,`metro_id`, `created_at`,`updated_at`) SELECT f.`campaign_id`, f.`city_id`, NOW(), NOW() FROM (SELECT d.`campaign_id`, d.`city_id` FROM (SELECT c.`campaign_id`, c.`city_id` FROM (SELECT distinct a.`campaign_id`, b.`city_id` FROM `campaign_locations` a INNER JOIN `locations` b ON a.`location_id` = b.`id`) c) d LEFT JOIN […]

rails db:migrate failed’ .users’不存在:显示来自`users`的完整字段

我做了大量的谷歌搜索并阅读了很多堆栈溢出页面,但无法解决这个问题。 如果任何人可以帮助解决这个问题,那将会很有帮助。 我的应用程序昨天工作正常,现在突然它开始出错“rake db:migrate” 我检查我的方案很好,我试过rake db:drop / db:create / db:migrate,我检查了Gem文件中的设计。 我的错误: 我的架构: 我的gem文件: 任何帮助都将非常有用。 谢谢。 文本错误: Senthil:zenkars senthilkumar $ rake db:migrate rake aborted! Mysql2 ::错误:表’zenkars_development.users’不存在:显示来自users全部字段 任务:TOP => db:migrate => environment (通过使用–trace运行任务来查看完整跟踪) Senthil:zenkars senthilkumar $ rake db:migrate –trace **调用db:migrate(first_time) **调用环境(first_time) **调用disable_rails_admin_initializer(first_time) **执行disable_rails_admin_initializer **执行环境 耙子流产了! Mysql2 ::错误:表’zenkars_development.users’不存在:显示来自users全部字段/usr/local/Cellar/ruby/1.9.3-p194/lib/ruby/gems/1.9.1/gems/activerecord- 3.2.8 / lib / active_record / connection_adapters / abstract_mysql_adapter.rb:245:在`query’中

将保存/更新调用rails转换为sql

我想在运行时生成sql .save 当我在控制台中运行此命令时 irb(main):018:0> a = User.last irb(main):018:0> a.first_name => “Mohan” irb(main):019:0> a.first_name = ‘Sohan’ => “Sohan” irb(main):020:0> a.save (2.0ms) BEGIN SQL (1.4ms) UPDATE `users` SET `first_name` = ‘Sohan’, `updated_at` = ‘2017-02-15 14:00:10’ WHERE `users`.`id` = 1 (31.3ms) COMMIT => true 这实际上更新了记录。 我想知道在不更新记录的情况下生成的sql查询。 我尝试使用.to_sql但这似乎只适用于关系。

Rails没有在搜索表单上传递DB Query

这看起来更好看,这是日志,它传递了参数,但它没有传递带有该参数的查询 Started GET “/items?utf8=%E2%9C%93&search=blanca” for 65.34.251.106 at 2016-08-30 03:55:51 +0000 Processing by ItemsController#index as HTML Parameters: {“utf8″=>”✓”, “search”=>”blanca”} User Load (0.3ms) SELECT “users”.* FROM “users” WHERE “users”.”id” = ? ORDER BY “users”.”id” ASC LIMIT 1 [[“id”, 3]] Item Load (0.3ms) SELECT “items”.* FROM “items” LIMIT 50 OFFSET 0 Item Load (0.2ms) SELECT “items”.* FROM “items” […]

使用collection_check_boxes时遇到困难

我有一个模型Project ,其中有许多引用Genres ProjectGenres : class Project < ActiveRecord::Base has_many :project_genres accepts_nested_attributes_for :project_genres, allow_destroy: true has_many :genres, through: :project_genres end class ProjectGenre < ActiveRecord::Base belongs_to :project belongs_to :genre end class Genre < ActiveRecord::Base has_many :project_genres has_many :projects, through: :project_genres end 当我创建一个项目时,我想勾选它所附属的相应类型。 然后,当他们提交此表单时,它应该在ProjectGenre表中创建适当的记录。 我的表格中有以下内容: 我不确定我在控制器中做了什么? 我在params[:project][:project_genres]传回了一个数组(虽然它传回了一个额外的空条目),但是我应该在这里自己创建嵌入对象的驴工作,或者我错过了什么能够自动创建这些吗?

如何避免错误 – >重复输入

表用户(具有id,用户名,密码,is_admin) 我的控制器(我添加的地方) def create @user = User.new(params[:respondent]) # entered = User.find(:all, :conditions => [“email = ?”, @user]) render :json => @user.to_ext_json(:success => @user.save) return false end 当我粘贴相同的电子邮件时,我得到了这个: pre>Mysql::Error: Duplicate entry ‘sam@sa.com’ for key ’email’: INSERT INTO `users` (`created_at`, `updated_at`, `email`) VALUES(‘2011-05-05 09:05:57’, ‘2011-05-05 09:05:57’, ‘sam@sa.com’) 怎么避免这个? 我应该在控制器中写什么(有些如果?) 谢谢!

尝试使用rake db创建数据库时出现此错误:在Google上创建可以SQL服务器

运行rake db:create时出现此错误 root@guidir-smaill-group-1-po7p:/home/acc/site/site# RAILS_ENV=production rake db:create # Couldn’t create database for {“adapter”=>”mysql2”, “encoding”=>”utf8”, “pool”=>5, “username”=>”root”, “password”=>”pass”, “host”=>”173.144.230.182”, “database”=>”dbname”}, {:charset=>”utf8″, :collation=>”utf8_unicode_ci”} (If you set the charset manually, make sure you have a matching collation) 这个错误看起来相当普遍,我在这里看了很多关于修复它的post。 但它们都包括使用这些命令删除和重新安装MySQL export ARCHFLAGS=”-arch i386 -arch x86_64″ gem install mysql — –with-mysql-dir=/usr/local \ –with-mysql-config=/usr/local/bin/mysql_config sudo env ARCHFLAGS=”-arch x86_64″ gem install mysql — […]