2012-11-29 109 views
2

我需要更新一堆記錄(200k)在我的開發數據庫中,但通過rails控制檯運行查詢導致我的計算機窒息(部分原因是控制檯輸出結果的查詢)。禁用Rails 3.2.1控制檯SQL日誌

例如:

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> 

正如我們所看到的,印刷20萬條記錄就沒有布埃諾。

我試過這裏的解決方案: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有新的破解版嗎?或者我做錯了什麼?

+0

也許只是輸出重定向到一個文件,而不是,如果這是真正的放緩...... – rogerdpack

回答

2

你不必有控制檯打印的最後一條語句的結果。這是一個人爲的例子的一點點,但你可以有你的最後一句話是零:

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

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

我沒想到! –

0

我不認爲你做錯了什麼。 Player.all還會返回一切嗎?我的猜測是你看到的輸出可能是Rails主記錄器,而不是ActiveRecord記錄器。

您可以在development.rb中設置其中任何一個爲零。

編輯:

config.logger 
config.active_record.logger 
config.action_controller.logger 
config.action_view.logger 
config.action_mailer.logger 
config.active_resource.logger 
+0

這是值得一試。任何想法如何禁用「Rails主要記錄器」? –