2010-01-24 3 views
1

У меня есть небольшое бесплатное приложение, работающее на герою.Текущая транзакция heroku отменена

с перерывами приложение перестает работать и отображает страницу ошибки героя по умолчанию на экране. когда я проверяю журналы я вижу следующее:

ActiveRecord::StatementInvalid (PGError: ERROR: current transaction is aborted, commands ignored until end of transaction block : SELECT * FROM "users" WHERE ("users"."password" = E'' AND "users"."userid" = E'') LIMIT 1): app/models/user.rb:5:in authenticate'
app/controllers/admin_controller.rb:6:in
login'

в мой контроллер, я просто делаю следующее:

user = User.authenticate(params[:storeid], params[:password]) 

и в модели пользователя:

def self.authenticate(userid, password) 
    user = self.find_by_userid_and_password(userid, password) 
    user 
    end 

Сообщения об ошибках приводит меня полагать, что некоторые соединения остаются висящими и никогда не закрываются. Это когда-нибудь дело в рубиновом приложении?

В моем приложении также есть много мест, где я использую find_by_sql. это требует от нас прямого закрытия соединений?

Как это:

@sqlstmmt1 = "INSERT INTO addresses (\"line1\", \"line2\", city, state, zip, county) VALUES ('" + params[:line1] + "', '"+ params[:line2] + "', '"+params[:city]+ "', '" + params[:state] + "', '" + params[:zip]+ "', '" + params[:county]+"')" 
sql = ActiveRecord::Base.connection(); 
sql.begin_db_transaction 

ответ

0

Я получаю эту ошибку из-за того, что я думаю, при попытке вставить UTF-8 символов, поэтому я предполагаю, что ваш пароль может иметь экзотические символы. BTW: вам следует избегать используемой sql-строки, вложение параметров [: anything] - baaaad.

0

я получаю подобную ошибку и этот бит документации Rails помогло:

http://apidock.com/rails/ActiveRecord/Transactions/ClassMethods

Warning: one should not catch ActiveRecord::StatementInvalid exceptions inside a transaction block. ActiveRecord::StatementInvalid exceptions indicate that an error occurred at the database level, for example when a unique constraint is violated. On some database systems, such as PostgreSQL, database errors inside a transaction cause the entire transaction to become unusable until it’s restarted from the beginning. Here is an example which demonstrates the problem:

...

0

Я просто возобновлен приложение и все возвращается право

heroku restart 

Надеюсь, это поможет!

Смежные вопросы