#3308 closed defect (fixed)
"relation "system" does not exist" when using multiple Postgres schema in same DB
Reported by: | Owned by: | Jonas Borgström | |
---|---|---|---|
Priority: | normal | Milestone: | 0.10 |
Component: | general | Version: | devel |
Severity: | major | Keywords: | schema, relation, system, feedback, postgresql |
Cc: | Branch: | ||
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description (last modified by )
When using one Postgres DB with multiple schemas with Trac projects, there is must be "public" schema containing "system" table. In other words, database_version is wrongly checked against public schema, not schema of project.
I think problem is here:
File "/usr/lib/python2.4/site-packages/trac/env.py", line 235, in get_version cursor.execute("SELECT value FROM system WHERE name='database_version'")
Maybe schema specification before "system" needed?
Attachments (0)
Change History (7)
comment:1 by , 18 years ago
comment:2 by , 18 years ago
Status: | new → assigned |
---|
As soon as a new postgresql connection is established the search path is set to first look in the specified schema and after that "public".
The most likely explanation for this error message is that an incorrect schema name (or non at all) is specified in the database connection string. Can you please verify that you have a connection string like this in your trac.ini:
database = postgres:///database?schema=yourschemaname or database = postgres://user:pass@server/database?schema=yourschemaname
comment:3 by , 18 years ago
Description: | modified (diff) |
---|---|
Keywords: | feedback added |
comment:4 by , 18 years ago
No, database connection string is correct. It is: database = postgres://tracdbuser:tracdbpwd@localhost/tracdb?schema=myproj
When there are also public schema (created via trac-admin) in database tracdb - everything is fine: it works with "myproj" schema. But after renaming or deleting public schema, trac.cgi prints following for "myproj" project: (Sorry, I don't know how to put this error message in scrollable box) —- cut here —- Oops…
Trac detected an internal error:
relation "system" does not exist
Traceback (most recent call last):
File "/var/www/html/dev/yttrium/trac.cgi", line 20, in ?
cgi_frontend.run()
File "/usr/lib/python2.4/site-packages/trac/web/cgi_frontend.py", line 68, in run
gateway.run(dispatch_request)
File "/usr/lib/python2.4/site-packages/trac/web/wsgi.py", line 87, in run
response = application(self.environ, self._start_response)
File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 303, in dispatch_request
env = _open_environment(env_path, run_once=environwsgi.run_once)
File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 50, in _open_environment
return open_environment(env_path)
File "/usr/lib/python2.4/site-packages/trac/env.py", line 432, in open_environment
if env.needs_upgrade():
File "/usr/lib/python2.4/site-packages/trac/env.py", line 312, in needs_upgrade
if participant.environment_needs_upgrade(db):
File "/usr/lib/python2.4/site-packages/trac/env.py", line 366, in environment_needs_upgrade
dbver = self.env.get_version(db)
File "/usr/lib/python2.4/site-packages/trac/env.py", line 235, in get_version
cursor.execute("SELECT value FROM system WHERE name='database_version'")
File "/usr/lib/python2.4/site-packages/trac/db/util.py", line 48, in execute
return self.cursor.execute(sql)
File "/usr/lib/python2.4/site-packages/trac/db/util.py", line 48, in execute
return self.cursor.execute(sql)
ProgrammingError: relation "system" does not exist —- cut here —-
But "system" table exist both in "public" and "myproj" schemas and in both of them have correct database_version value.
comment:6 by , 18 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Okay, I now think I understand what happens. This error occured because you removed the "public" schema but Trac unnecessarly assumed that this schema would always exist.
As of [3574] Trac no longer assumes that the public schema always exists.
comment:7 by , 9 years ago
Keywords: | postgresql added; postgres removed |
---|
Wrongly checked, I mean.