Tag: mysql

当我使用find_by_sql别名时,我感到困惑

我正在使用RoR和mysql数据库。 我想将timestamp列转换为字符串,所以我有SQL: @books = Book.find_by_sql(“select id, name, date_format(borrow_date, ‘%m/%d/%Y’) borrow_date from books”) @books[0].borrow_date => ‘Sun, 03 Aug 2014 17:00:00 PDT -07:00′ 当我输出像@books [0] .borrow_date这样的borrow_date时,我得到了未格式化的字符串’Sun,2014年8月3日17:00:00 PDT -07:00’,这是不可取的。 我想要“08/03/2014” 如果我更改了不同于列名的别名,我会获得预期的数据字符串。 @books = Book.find_by_sql(“select id, name, date_format(borrow_date, ‘%m/%d/%Y’) borrow_date_other from books”) @books[0].borrow_date_other => “08/03/2014” 我不想在ruby代码中格式化日期字符串,因为我需要从oracle数据库中提取相同的数据,并且只想在使用前转换为字符串。 为什么RoR不允许相同的列名和别名? 我错过了什么吗? 先感谢您。

ActiveRecord查询:按所包含模型的总和排序

项目has_many:项目 项目belongs_to:项目 我正在尝试按各自项目的总价格对项目进行排序。 就像是: Project.includes(:items).order(‘SUM(items.price)’) 使用此代码,ActiveRecord仅返回第一个项目。 我错过了什么?

在ubuntu上运行mysql gem问题

Ruby on Rails:我想在localhost上调用一个控制器,但服务器说!!! 缺少mysql gem。 将它添加到您的Gemfile:gem’mysql’,’2.8.1′ 问题 ? 当我点击’gem list’命令然后我得到一个列表女巫包含mysql 2.8.1。 所以gem是安装的! 为什么不能通过webrick看到它? 谢谢。

Rails中有批量更新吗?

在Java中,我们有批处理执行,如下面的java代码: Statement statement = null; statement = connection.createStatement(); statement.addBatch(“update people set firstname=’John’ where id=123”); statement.addBatch(“update people set firstname=’Eric’ where id=456”); statement.addBatch(“update people set firstname=’May’ where id=789”); int[] recordsAffected = statement.executeBatch(); 如何在rails ActiveRecord中做同样的事情?

Rails:如果没有可用的数据库连接,则显示维护页面

我正在寻找一种解决方案,当没有可用于连接的Mysql服务器时,我的rails应用程序可以呈现用户友好的维护页面。 通常从active_record中的mysql连接适配器抛出一个Mysql::Error类似于: /!\ FAILSAFE /!\ Wed May 26 11:40:14 -0700 2010 Status: 500 Internal Server Error Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock 是否有一种低开销的方法来捕获此错误并呈现维护页面? 我假设因为连接实际上是在active_record mysql适配器中进行的,所以应用程序在抛出错误之前从未进入控制器堆栈,因此您无法在控制器中捕获它。 任何投入将不胜感激。

带有Postgres数据的Rails不按顺序返回

我刚刚将我的应用程序从MySQL转换为Postgres。 以前,对.all的请求以id顺序返回所有行。 在Postgres上,行无序返回。 同样, Person.first 用于返回id为1的记录,现在它有时会返回另一条记录。 如果我添加这样的订单子句: Person.order(“id”).first 查询成功并返回第一行。 这是预期的行为吗?

如何在rails中使用4个表的连接查询

我有以下表4模型 class ItemCode < ActiveRecord::Base belongs_to :item_point end class ItemPoint < ActiveRecord::Base belongs_to :item has_many :item_codes end class Item < ActiveRecord::Base belongs_to :prodcut_category has_many :item_points end class ProductCategory < ActiveRecord::Base has_many :items end 现在我必须使用product_category找到item_codes详细信息,因为我使用了内连接。 这是mysql查询 SELECT * FROM `item_codes` utc INNER JOIN item_points rtp ON rtp.id = utc.item_point_id INNER JOIN items ri ON ri.id = […]

是否可以使用`ORDER BY FIELD`语句对多列进行排序?

我正在使用Ruby on Rails 3.2.2,我想知道是否可以通过使用ORDER BY FIELD语句来订购多个列/字段(例如,在Model.order(“orders_count, created_at, name, …”)但是对于ORDER BY FIELD )。 如果是这样,我怎么能“按ORDER BY FIELDS ”? PS :如前面的答案中所述 ,为了订购与一栏相关的记录,我使用的是Model.order(“field(status, ‘blocked’, ‘unpublished’, ‘published’)”)语句。

MySQL地狱……无法连接数据库/tmp/mysql.sock

更新:我已经停止正在运行的旧的mysql进程并导致一些混乱。 现在我想我只有更新的(5.1.40)版本在运行。 但是,它指向错误的数据文件。 它指向一个默认的安装数据文件,我希望它指向/var/mysql的现有数据文件。 这是/etc/my.cnf的一部分 # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /var/mysql/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] port = 3306 socket = /var/mysql/mysql.sock 这是指向较旧的mysql.sock。 我似乎无法在较新的MySQL安装的目录树中找到它?!? 除非它在某个地方模糊不清。 有人帮吗? 基本上我安装了一个较新的MySQL,现在需要使用我现有的数据启动这个新版本。 并理清这个mysql.sock的事情…. 我最近在Mac OS X Server上更新了MySQL,并且从rails应用程序连接到它有一段时间了。 […]

如何从Rails中的MySQL存储过程中获取输出参数?

我试图从MySQL存储过程中获取输出参数,让我们看一下下面的例子: 1在mysql中我创建了这个过程并且它可以工作。 CREATE PROCEDURE sp_name (out id int) Begin select id into @id from table order by id desc limit 1; End mysql> call sp_deduct_credit_and_money(@id); Query OK, 0 rows affected (0.01 sec) mysql> select @id; +————–+ | @id | +————–+ | 24 | +————–+ 1 row in set (0.00 sec) 2因此,它也适用于Rails,但它不会为我返回任何值: ActiveRecord::Base.connection.execute(“call sp_name(@id)”) ActiveRecord::Base.connection.execute(“select @id”) […]