Project

General

Profile

Actions

Defect #8182

closed

SQLite3::CantOpenException: unable to open database file: DROP TABLE "issue_histories"

Added by Jon Lambert about 14 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
Database
Target version:
-
Start date:
2011-04-19
Due date:
% Done:

0%

Estimated time:
Resolution:
Invalid
Affected version:

Description

Checked out current head...

$ svn co http://redmine.rubyforge.org/svn/trunk redmine                   
...snip...
 U   redmine
Checked out revision 5504.

Ruby version:

$ ruby --version
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]

Installed gems:

$ gem list

*** LOCAL GEMS ***

actionmailer (2.3.11, 2.3.5)
actionpack (2.3.11, 2.3.5)
activerecord (2.3.11, 2.3.5)
activeresource (2.3.11, 2.3.5)
activesupport (2.3.11, 2.3.5)
cgi_multipart_eof_fix (2.5.0)
daemons (1.1.2)
fastthread (1.0.7)
gem_plugin (0.2.3)
i18n (0.4.2)
mongrel (1.1.5)
rack (1.1.2, 1.0.1)
rails (2.3.11, 2.3.5)
rake (0.8.7)
rubygems-update (1.4.2)
sqlite3 (1.3.3)

database.yml contents:

$ cat config/database.yml
production:
  adapter: sqlite3
  database: db/prod.db

development:
  adapter: sqlite3
  database: db/dev.db

test:
  adapter: sqlite3
  database: db/test.db

Rails environment:

$ RAILS_ENV=production ruby script/about                                                                                            Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting.
About your application's environment
Ruby version              1.8.7 (i386-cygwin)
RubyGems version          1.4.2
Rack version              1.1.2
Rails version             2.3.11
Active Record version     2.3.11
Active Resource version   2.3.11
Action Mailer version     2.3.11
Active Support version    2.3.11
Application root          /c/www/redmine
Environment               production
Database adapter          sqlite3
Database schema version   0

Install step ok:

$ rake generate_session_store
(in /c/www/redmine)

Install step bombs:

$ RAILS_ENV=production rake db:migrate --trace                                                                                      (in /c/www/redmine)
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
==  Setup: migrating ==========================================================
-- create_table("attachments", {:force=>true})
   -> 0.0060s
-- create_table("auth_sources", {:force=>true})
   -> 0.0020s
-- create_table("custom_fields", {:force=>true})
   -> 0.0030s
-- create_table("custom_fields_projects", {:force=>true, :id=>false})
   -> 0.0020s
-- create_table("custom_fields_trackers", {:force=>true, :id=>false})
   -> 0.0010s
-- create_table("custom_values", {:force=>true})
   -> 0.0020s
-- create_table("documents", {:force=>true})
   -> 0.0020s
-- add_index("documents", ["project_id"], {:name=>"documents_project_id"})
   -> 0.0000s
-- create_table("enumerations", {:force=>true})
   -> 0.0020s
-- create_table("issue_categories", {:force=>true})
   -> 0.0020s
-- add_index("issue_categories", ["project_id"], {:name=>"issue_categories_project_id"})
   -> 0.0010s
-- create_table("issue_histories", {:force=>true})
   -> 0.0030s
-- add_index("issue_histories", ["issue_id"], {:name=>"issue_histories_issue_id"})
   -> 0.0000s
-- create_table("issue_statuses", {:force=>true})
   -> 0.0010s
-- create_table("issues", {:force=>true})
   -> 0.0040s
-- add_index("issues", ["project_id"], {:name=>"issues_project_id"})
   -> 0.0010s
-- create_table("members", {:force=>true})
   -> 0.0020s
-- create_table("news", {:force=>true})
   -> 0.0030s
-- add_index("news", ["project_id"], {:name=>"news_project_id"})
   -> 0.0000s
-- create_table("permissions", {:force=>true})
   -> 0.0020s
-- create_table("permissions_roles", {:force=>true, :id=>false})
   -> 0.0020s
-- add_index("permissions_roles", ["role_id"], {:name=>"permissions_roles_role_id"})
   -> 0.0010s
-- create_table("projects", {:force=>true})
   -> 0.0030s
-- create_table("roles", {:force=>true})
   -> 0.0000s
-- create_table("tokens", {:force=>true})
   -> 0.0030s
-- create_table("trackers", {:force=>true})
   -> 0.0020s
-- create_table("users", {:force=>true})
   -> 0.0040s
-- create_table("versions", {:force=>true})
   -> 0.0050s
-- add_index("versions", ["project_id"], {:name=>"versions_project_id"})
   -> 0.0010s
-- create_table("workflows", {:force=>true})
   -> 0.0030s
==  Setup: migrated (0.1540s) =================================================

==  IssueMove: migrating ======================================================
==  IssueMove: migrated (0.0070s) =============================================

==  IssueAddNote: migrating ===================================================
==  IssueAddNote: migrated (0.0070s) ==========================================

==  ExportPdf: migrating ======================================================
==  ExportPdf: migrated (0.0090s) =============================================

==  IssueStartDate: migrating =================================================
-- add_column(:issues, :start_date, :date)
   -> 0.0030s
-- add_column(:issues, :done_ratio, :integer, {:null=>false, :default=>0})
   -> 0.0010s
==  IssueStartDate: migrated (0.0050s) ========================================

==  CalendarAndActivity: migrating ============================================
==  CalendarAndActivity: migrated (0.0200s) ===================================

==  CreateJournals: migrating =================================================
-- create_table(:journals, {:force=>true})
   -> 0.0080s
-- create_table(:journal_details, {:force=>true})
   -> 0.0030s
-- add_index("journals", ["journalized_id", "journalized_type"], {:name=>"journals_journalized_id"})
   -> 0.0010s
-- add_index("journal_details", ["journal_id"], {:name=>"journal_details_journal_id"})
   -> 0.0010s
-- drop_table(:issue_histories)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::CantOpenException: unable to open database file: DROP TABLE "issue_histories" 
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract_adapter.rb:227:in `log'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:172:in `execute'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:418:in `catch_schema_changes'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:172:in `execute'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/schema_statements.rb:182:in `drop_table'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:352:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:352:in `method_missing'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:328:in `say_with_time'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:328:in `say_with_time'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:348:in `method_missing'
./db/migrate//007_create_journals.rb:37:in `up_without_benchmarks'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:282:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:282:in `migrate'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:282:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:365:in `__send__'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:365:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:491:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:565:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:565:in `ddl_transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:182:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:565:in `ddl_transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:490:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:477:in `each'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:477:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:401:in `up'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:383:in `migrate'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.11/lib/tasks/databases.rake:112
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

Test of sqlite3-ruby installation...

$ cat testsql.rb 
require 'rubygems'
require 'sqlite3'
require 'pp'

db = SQLite3::Database.new( "test.db" )

db.execute("create table t1(a, b, c)")
sql = <<SQL
    insert into t1 values ( 'one', 'two', 'foo' );
    insert into t1 values ( 'three', 'four', 'bar' );
    insert into t1 values ( 'five', 'six', 'baz' );
SQL
db.execute_batch( sql )
rows = db.execute( "select * from t1" )
pp rows

db.execute("create table t2(a, b)")
db.execute("insert into t2 select a,b from t1")
db.execute("drop table t1")
rows = db.execute2( "select * from t2" )
pp rows

$ ruby testsql.rb 
[["one", "two", "foo"], ["three", "four", "bar"], ["five", "six", "baz"]]
[["a", "b"], ["one", "two"], ["three", "four"], ["five", "six"]]

$ sqlite3 test.db 

SQLite version 3.7.3
Enter ".help" for instructions
Enter SQL statements terminated with a ";" 
sqlite> 
sqlite> .tables
t2
sqlite> .dump t2
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE t2(a, b);
INSERT INTO "t2" VALUES('one','two');
INSERT INTO "t2" VALUES('three','four');
INSERT INTO "t2" VALUES('five','six');
COMMIT;

See also issue #8178


Related issues

Is duplicate of Redmine - Defect #8178: SQLite3::CantOpenException: unable to open database file: DROP TABLE "issue_histories"Closed2011-04-18

Actions
Actions #1

Updated by Etienne Massip about 14 years ago

Do Redmine instance server running profile have write / delete access to your prod.db file and to the db directory containing the file ?

Actions #2

Updated by Jon Lambert about 14 years ago

There is no running server yet.
I have full access access.
I'm running the "RAILS_ENV=production rake db:migrate --trace" command.

Actions #3

Updated by Etienne Massip about 14 years ago

Truly odd ; if you don't want to loose time trying to solve this issue, simply comment the drop :issues_histories line in file 007_create_journals.rb and drop the table by hand.

Actions #4

Updated by Jon Lambert almost 14 years ago

...
==  CreateSettings: migrating =================================================
-- create_table(:settings, {:force=>true})
   -> 0.0000s
==  CreateSettings: migrated (0.0000s) ========================================

==  SetDocAndFilesNotifications: migrating ====================================
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::CantOpenException: unable to open database file: UPDATE "permissions" SET "mail_option" = 't' WHERE "id" = 34
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract_adapter.rb:227:in `log'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:172:in `execute'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:418:in `catch_schema_changes'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:172:in `execute'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/database_statements.rb:265:in `update_sql'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/sqlite_adapter.rb:176:in `update_sql'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/database_statements.rb:49:in `update_without_query_dirty'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/query_cache.rb:19:in `update'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/base.rb:2936:in `update_without_lock'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/locking/optimistic.rb:81:in `update_without_dirty'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/dirty.rb:146:in `update_without_timestamps'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/timestamp.rb:64:in `update_without_callbacks'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/callbacks.rb:282:in `update'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/base.rb:2927:in `create_or_update_without_callbacks'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/callbacks.rb:250:in `create_or_update'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/base.rb:2577:in `save_without_validation'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/validations.rb:1090:in `save_without_dirty'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/dirty.rb:79:in `save_without_transactions'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:229:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:229:in `with_transaction_returning_status'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:182:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:228:in `with_transaction_returning_status'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:196:in `save'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:208:in `rollback_active_record_state!'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:196:in `save'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/base.rb:2661:in `update_attribute'
./db/migrate//018_set_doc_and_files_notifications.rb:7:in `up_without_benchmarks'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:282:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:282:in `migrate'
/usr/lib/ruby/1.8/benchmark.rb:293:in `measure'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:282:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:365:in `__send__'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:365:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:491:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:565:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:565:in `ddl_transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/transactions.rb:182:in `transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:565:in `ddl_transaction'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:490:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:477:in `each'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:477:in `migrate'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:401:in `up'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.11/lib/active_record/migration.rb:383:in `migrate'
/usr/lib/ruby/gems/1.8/gems/rails-2.3.11/lib/tasks/databases.rake:112
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `call'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in `execute'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in `invoke_with_call_chain'
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in `invoke_with_call_chain'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in `invoke'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in `invoke_task'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `each'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2023:in `top_level'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in `standard_exception_handling'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in `run'
/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/bin/rake:31
/usr/bin/rake:19:in `load'
/usr/bin/rake:19

It gets further and bombs in step 018.

Actions #5

Updated by Etienne Massip almost 14 years ago

Does your permissions table has a mail_option column ?

Actions #6

Updated by Jon Lambert almost 14 years ago

$ sqlite3 prod.db
sqlite> .schema permissions
CREATE TABLE "permissions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
"controller" varchar(30) DEFAULT '' NOT NULL, 
"action" varchar(30) DEFAULT '' NOT NULL, "description" varchar(60) DEFAULT '' NOT NULL, 
"is_public" boolean DEFAULT 'f' NOT NULL, "sort" integer DEFAULT 0 NOT NULL, 
"mail_option" boolean DEFAULT 'f' NOT NULL, 
"mail_enabled" boolean DEFAULT 'f' NOT NULL);

Yes.

Actions #7

Updated by Etienne Massip almost 14 years ago

Very weird issue, still looks like permission related, maybe something about the transaction journal created during the migration.

Could you run your migrations as su ?

Actions #8

Updated by Jon Lambert almost 14 years ago

There is no superuser on Cygwin.

Actions #9

Updated by Marius BĂLTEANU over 6 years ago

  • Status changed from New to Closed
  • Resolution set to Invalid

I'm closing this ticket because is very old and almost sure obsolete. Please reopen if you experience the same issue on the latest Redmine versions.

Actions

Also available in: Atom PDF