если имя коллекции "my.collection"
db.my.collection.findOne (); // OK
null
, если имя коллекции «my.1.collection»
db.my.1.collection.findOne () ; // Не в порядке
SyntaxError: missing; перед оператором
Исправлено:
дБ ["my.1.collection"]. findOne (); // Теперь все в порядке
null
В первом приближении:
ActiveRecord::Base.connection.query_cache.clear
Мы используем:
ActiveRecord::Base.connection.query_cache.clear
(ActiveRecord::Base.connection.tables - %w[schema_migrations versions]).each do |table|
table.classify.constantize.reset_column_information rescue nil
end
Но я не уверен, что даже этого достаточно.
Взгляните на метод clear_query_cache
в http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/QueryCache.html
Часто, когда вы видите кеширование запросов к базе данных, ваша БД выполняет кеширование, а не ActiveRecord, что означает, что вам нужно очистить кеш и буферы на уровне БД, а не на уровне ActiveRecord.
Например, чтобы очистить кэш и буферы Postgres на Mac, вы должны сделать sudo purge
, что заставляет дисковый кеш очищаться и очищаться.
Чтобы очистить кэш и буферы Postgres в Linux, вы должны выключить postgres, удалить кэши и снова запустить postgres:
service postgresql stop
sync
echo 3 > /proc/sys/vm/drop_caches
service postgresql start
Дальнейшее чтение: