Tag: mysql

在ActiveRecord查询中包含所有ID

我正在开发一个游戏平台,我有以下(简化)模型: class Game < ActiveRecord:Base has_many :game_players has_many :players, through: :game_players end class Player < ActiveRecord:Base has_many :game_players has_many :games, through: :game_players end class GamePlayer < ActiveRecord:Base belongs_to :game belongs_to :player end 我需要执行一个ActiveRecord查询,查询由特定用户组播放的所有游戏。 例如,给定数据: +———+———–+ | game_id | player_id | +———+———–+ | 10 | 39 | | 10 | 41 | | 10 | 42 […]

ON DUPLICATE KEY UPDATE – 添加到现有值

我有SQL(MySQL 5.x)查询,如: INSERT INTO table (val1), ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`) 这很好用。 现在我需要用VALUES( val1 )+ ruby​​变量的总和来更新它。 INSERT INTO table (val1), ON DUPLICATE KEY UPDATE `val1` = VALUES(`val1`) + #{ruby_variable} 抛出一个错误。 (Ruby这里只是一个例子,实际上我需要求和VALUES( val1 )+整数) 怎么做?

Rails 3,将模型中的字段从字符串更改为日期时间类型

在制作我的模型时,我将行类型设为字符串(我当时并不知道日期时间)。 目前我有很多记录都填充了这一行。 有没有一种安全的方法可以通过迁移将模型的行转换为日期时间 – 除了删除它,然后再添加它? 谢谢!

Rails ActiveRecord – 有没有一种方法可以在没有id的表上执行操作?

我有一个一排两列的桌子 – int ‘version’, datetime ‘updated’ 是否有Rails ActiveRecord方法来获取和设置这些列中的数据? 没有id列。 我正在使用此表来跟踪其他表的查询版本。 在对另一个表的每次查询之后,版本列递增,并且使用当前日期时间设置更新的列。

显示用户输入的ASCII-8BIT字符时出现“不兼容的字符编码:UTF-8和ASCII-8BIT”错误

用户将文本保存在带有“café”字样的表单中(注意“é”)。 当加载显示此文本的#show页面时,我得到一个带有消息incompatible character encodings: UTF-8 and ASCII-8BIT的Encoding::CompatibilityError错误incompatible character encodings: UTF-8 and ASCII-8BIT 。 错误可以在控制台中重复: > r = Report.find(123) # load the record > r.update(:comments => “café”) => true > r.comments => “caf\xC3\xA9” > r.comments.encoding => # > r.comments.encode(“UTF-8”) Encoding::UndefinedConversionError: “\xC3” from ASCII-8BIT to UTF-8 from (irb):11:in `encode’ 在#show页面上显示该字段( )会产生错误。 由于数据库列编码设置为UTF-8,并且许多应用程序配置将编码定义为“UTF-8”,因此编码不是UTF-8,而是ASCII-8BIT,似乎是错误的。 理想情况下,“é”以其输入的方式显示而没有任何错误,但在这一点上,我只会采取一种方法来避免错误。 似乎我的所有forms(几十个)都容易受此影响。 有没有办法允许显示ASCII-8BIT字符? 强制编码( )会产生所需的结果,避免错误并正确显示字符,从而导致以下解决方法: […]

解决Python的共享服务器安全问题

所以我的小组正在尝试为各种各样的Web服务建立一个共享服务器环境。 我想我们已经决定在php.ini和php_admin_value设置disable_functions和disable_classes网站,以强制每个应用程序的httpd.conf open_basedir用于php脚本,以及乘客用户切换 ruby脚本。 我们仍然需要为python找到一些东西。 Passenger确实支持python,但不支持特定子目录的每个应用程序安全性(在域级别是全部或全部)。 有什么建议? (如果之前的任何一个没有意义 – 好吧,我是那个应该设置python支持的人,而不是设置php或ruby支持的人,所以还有一些“然后一些魔法发生了“从我的角度出发的步骤”。

Mavericks上的Rails + MySQL – 未加载库:libmysqlclient.18.dylib

当我在我的localhost(OSX Mavericks)上运行Rails( rails s )应用程序时,我收到此错误 message:/Users/adam/.rvm/gems/ruby-2.0.0-p481/gems/mysql2-0.3.16/lib/mysql2.rb:8:in `require’: dlopen(/Users/adam/.rvm/gems/ruby-2.0.0-p481/extensions/x86_64-darwin-13/2.0.0-static/mysql2-0.3.16/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib (LoadError) Referenced from: /Users/adam/.rvm/gems/ruby-2.0.0-p481/extensions/x86_64-darwin-13/2.0.0-static/mysql2-0.3.16/mysql2/mysql2.bundle Reason: image not found – /Users/adam/.rvm/gems/ruby-2.0.0-p481/extensions/x86_64-darwin-13/2.0.0-static/mysql2-0.3.16/mysql2/mysql2.bundle from /Users/adam/.rvm/gems/ruby-2.0.0-p481/gems/mysql2-0.3.16/lib/mysql2.rb:8:in `’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in `require’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in `each’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:72:in `block in require’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in `each’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler/runtime.rb:61:in `require’ from /Users/adam/.rvm/gems/ruby-2.0.0-p481@global/gems/bundler-1.6.2/lib/bundler.rb:132:in `require’ from /Users/adam/rubydev/logistadvise/config/application.rb:7:in […]

Ruby mysql2在单个查询中有多个语句

我有一个问题,我正在更新我的数据库中的数百万行,所以我不想单独更新每一行,而是希望将〜1000个语句组合并到一个查询中。 我已经启用了MULTI_STATEMENTS client = Mysql2::Client.new(:host => ‘localhost’, :database => ‘mehdb’, :username => “root”, :password => “”, :flags => Mysql2::Client::MULTI_STATEMENTS) 这是我正在运行的代码的示例 sql = “SELECT id, x FROM pew WHERE x IS NULL LIMIT 1000″ results = db_read.query(sql) while results.count > 0 updates = ” results.each do |r| updates += “UPDATE pew SET x = 10 WHERE […]

MySQL的RENAME TABLE语句如何工作/执行?

MySQL有一个RENAME TABLE statemnt,允许您更改表的名称。 手册提到 重命名操作以primefaces方式完成,这意味着在重命名运行时,没有其他会话可以访问任何表 手册没有(据我所知)说明如何完成重命名。 是否创建了表的完整副本,给定了新名称,然后删除旧表? 或者MySQL在幕后做了一些魔术来快速重命名表? 换句话说,表的大小是否会影响RENAME表语句运行的时间。 还有其他可能导致块重命名的事情会严重阻塞吗?

为什么rails将TEXT列固定为65535个字符?

我正在使用Ruby on Rails在MySQL的TEXT列中保存原始电子邮件。 它一直被截断为65535个字符,是否有人知道是什么原因引起的? MySQL使用max_allowed_packet=64M运行 使用InnoDB作为存储引擎。