sql - 禁用 Rails 3.2.1 控制台 SQL 日志记录

标签 sql ruby-on-rails logging console irb

我需要更新我的开发数据库中的一堆记录(200k),但是通过 Rails 控制台运行查询导致我的计算机卡住(部分原因是控制台打印出查询结果)。

示例:

1.9.3p194 :083 > Player.first
 => #<Player id: 1, IsActive: false, IsVisible: false, FirstName: "Ovie", LastName: "Soko", HeightFeet: 6, HeightInches: 8, Weight: 210, Birthday: nil, Gender: "M", HometownCity: "London", HometownState: "", HometownZip: "", HometownCountry: "", HighSchoolId: "", HighSchoolIdTemp: 0, HighSchoolGradYear: "2009", CollegeYear: "", Redshirted: false, Transferred: false, CollegeId: "{299F909C-88D9-4D26-8ADC-3EC1A66168BB}", CollegeIdTemp: 844, CollegeGradYear: "2013", OtherAccountId: 0, PreviousCollegeId: 0, CurrentTeamId: 0, LateralRecommendationReason: "", LateralRecommendationLink: "", CreationDate: "2011-02-16 20:53:34.877000000", CreatedBy: "", LastModifiedDate: "2011-02-16 20:53:34.877000000", LastModifiedBy: "", TwitterLink: "", FacebookLink: "", PersonalWebsite: "", PlayerImage: "", FirstNameNickName: "", NeulionID: 0, OtherTeamID: 0, OtherSportTypeID: 0, SourceDataTypeID: 1, PlayerTypeID: 2, LoadID: "", SameNameTeammate: "", SameNameSchoolMate: "", SD_SportID: 0, SD_PlayerID: 0, ZeroNCAAStats: "", ModifiedByPythonGame: "", Missing2011: "", Transfer2011: "", RecruitingClass: "\r", created_at: nil, updated_at: nil, high_school_id: nil, high_school_name: nil, not_valid: nil, city_to_zip_id: nil, user_id: nil> 

正如我们所见,打印 200k 条记录并不容易。

我在这里尝试了解决方案:Disable Rails SQL logging in console ,但之后我仍然得到日志输出。

1.9.3p194 :087 > old_logger = ActiveRecord::Base.logger
 => #<Logger:0x007feb04b8de58 @progname=nil, @level=1, @default_formatter=#<Logger::Formatter:0x007feb04b8dde0 @datetime_format=nil>, @formatter=#<Logger::SimpleFormatter:0x007feb04b8dc50 @datetime_format=nil>, @logdev=#<Logger::LogDevice:0x007feb04b8dcf0 @shift_size=nil, @shift_age=nil, @filename=nil, @dev=#<IO:<STDERR>>, @mutex=#<Logger::LogDevice::LogDeviceMutex:0x007feb04b8dcc8 @mon_owner=nil, @mon_count=0, @mon_mutex=#<Mutex:0x007feb04b8dc78>>>> 
1.9.3p194 :088 > ActiveRecord::Base.logger = nil
 => nil 
1.9.3p194 :089 > Player.first
 => #<Player id: 1, IsActive: false, IsVisible: false, FirstName: "Ovie", LastName: "Soko", HeightFeet: 6, HeightInches: 8, Weight: 210, Birthday: nil, Gender: "M", HometownCity: "London", HometownState: "", HometownZip: "", HometownCountry: "", HighSchoolId: "", HighSchoolIdTemp: 0, HighSchoolGradYear: "2009", CollegeYear: "", Redshirted: false, Transferred: false, CollegeId: "{299F909C-88D9-4D26-8ADC-3EC1A66168BB}", CollegeIdTemp: 844, CollegeGradYear: "2013", OtherAccountId: 0, PreviousCollegeId: 0, CurrentTeamId: 0, LateralRecommendationReason: "", LateralRecommendationLink: "", CreationDate: "2011-02-16 20:53:34.877000000", CreatedBy: "", LastModifiedDate: "2011-02-16 20:53:34.877000000", LastModifiedBy: "", TwitterLink: "", FacebookLink: "", PersonalWebsite: "", PlayerImage: "", FirstNameNickName: "", NeulionID: 0, OtherTeamID: 0, OtherSportTypeID: 0, SourceDataTypeID: 1, PlayerTypeID: 2, LoadID: "", SameNameTeammate: "", SameNameSchoolMate: "", SD_SportID: 0, SD_PlayerID: 0, ZeroNCAAStats: "", ModifiedByPythonGame: "", Missing2011: "", Transfer2011: "", RecruitingClass: "\r", created_at: nil, updated_at: nil, high_school_id: nil, high_school_name: nil, not_valid: nil, city_to_zip_id: nil, user_id: nil> 

Rails 3.2.1 有新的 hack 还是我做错了什么?

最佳答案

您不必让控制台打印最后一条语句的结果。这是一个有点人为的例子,但你可以让你的最后一个语句为零:

irb(main):156:0> Player.update_all(:IsActive => true); nil

SQL (1.8ms)  UPDATE "players" SET "IsActive" = 't'
=> nil

关于sql - 禁用 Rails 3.2.1 控制台 SQL 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617824/

相关文章:

ruby-on-rails - 收到来自 Paypal 的通知后生成 PDF 文件

sql - MySQL 条件 SELECT 语句

sql - 我什么时候应该在 postgresql 中使用 fetch 关键字

sql - SQL中Join后计算具有相同值的行

ruby-on-rails - 模型方法取决于 current_user in rails

python - 对齐不同级别的日志消息

mysql - SQL IF 语句错误

ruby-on-rails - 我如何在 Rails 查找中进行左连接

logging - Cassandra 与日志记录事件

c++ - 在 log4cxx 中使用 utf-8 字符