Je suis en train de mettre à jour une installation de Redmine de la version 3.0.3 à 3.3.3. Le processus que je suis toujours pour cela est d'installer une nouvelle Redmine sur une nouvelle machine, importer et sqldump de l'actuelle, puis copier les choses importantes (files/config.yml/database.yml, plugins) et exécuter toutes les étapes nécessaires. Cela a généralement bien fonctionné dans le passé.Colonne inconnue 'tokens.update_on' lors de l'importation de mysql dump vers la nouvelle instance de Redmine
Pour le moment, après l'importation de la commande sqldump, Redmine ne démarre pas et j'obtiens une erreur que je n'arrive pas à comprendre.
L'importation mysql semble fonctionner:
mysql -u 'user' -p'mypassword' redmine < /home/redmine20170608.sql
Alors je les étapes habituelles qui fonctionnent tous sans erreur:
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
bundle exec rake db:migrate RAILS_ENV=production
bundle exec rake tmp:sessions:clear
bundle exec rake tmp:cache:clear
sudo service httpd restart
Quand je navigue à myredmine.com que je reçois le « interne Message d'erreur. Vérifiez les journaux et sur mettre est:
ActiveRecord::StatementInvalid (Mysql2::Error: Unknown column 'tokens.updated_on' in 'field list': UPDATE `tokens` SET `tokens`.`updated_on` = '2017-06-09 07:10:56.515511' WHERE `tokens`.`user_id` = 1 AND `tokens`.`value` = '5a229e24fe73e8a43768c46af2275a8b4a60c9b3' AND `tokens`.`action` = 'session'):
app/models/user.rb:425:in `verify_session_token'
app/controllers/application_controller.rb:77:in `session_expired?'
app/controllers/application_controller.rb:67:in `session_expiration'
Migrating to CreateRolesManagedRoles (20150528092912)
Started GET "/" for 72.155.92.149 at 2017-06-09 07:16:14 +0000
Processing by WelcomeController#index as HTML
Completed 500 Internal Server Error in 25ms (ActiveRecord: 1.8ms)
ActiveRecord::StatementInvalid (Mysql2::Error: Unknown column 'tokens.updated_on' in 'field list': UPDATE `tokens` SET `tokens`.`updated_on` = '2017-06-09 07:16:14.896744' WHERE `tokens`.`user_id` = 1 AND `tokens`.`value` = '5a229e24fe73e8a43768c46af2275a8b4a60c9b3' AND `tokens`.`action` = 'session'):
app/models/user.rb:425:in `verify_session_token'
app/controllers/application_controller.rb:77:in `session_expired?'
app/controllers/application_controller.rb:67:in `session_expiration'
C'est le code de la ligne 425 de ce fichier:
scope.update_all(:updated_on => Time.now) == 1
qui se trouve dans cette section:
# Returns true if token is a valid session token for the user whose id is user_id
def self.verify_session_token(user_id, token)
return false if user_id.blank? || token.blank?
scope = Token.where(:user_id => user_id, :value => token.to_s, :action => 'session')
if Setting.session_lifetime?
scope = scope.where("created_on > ?", Setting.session_lifetime.to_i.minutes.ago)
end
if Setting.session_timeout?
scope = scope.where("updated_on > ?", Setting.session_timeout.to_i.minutes.ago)
end
scope.update_all(:updated_on => Time.now) == 1
end
Je trouve habituellement la sortie d'erreur pour ceux-ci soit relativement explicite mais je ne sais pas comment interpréter celle-ci.
J'ai supprimé tous les plugins pour m'assurer qu'il ne s'agit pas d'un problème de compatibilité et que j'obtiens toujours le même problème. La version actuelle de Redmine est la version 3.0.3, exécutée sur Ruby 1.9.3-p551, Rails 4.2.1 et AWS Linux AMI 2010.03 (dont il est conseillé de s'éloigner).
Le nouveau Redmine est 3.3.3, en cours d'exécution sur Ruby 2.2.5-P319, Rails 4.2.7.1 et CentOS 7.
Toute aide grandement appréciée.
Quel est le code sur la ligne 425? partager la méthode dans le contrôleur d'application –
quelle est la portée? –
Mis à jour à nouveau pour inclure la portée. – shaneoh