Opened 16 years ago
Closed 16 years ago
#5844 closed defect (invalid)
Migrating fails with psycopg2.ProgrammingError and .DataError
| Reported by: | Eric Petit | Owned by: | John Hampton |
|---|---|---|---|
| Priority: | normal | Component: | SqliteToPgScript |
| Severity: | normal | Keywords: | |
| Cc: | Trac Release: | 0.11 |
Description
On Debian Lenny with:
- Trac: 0.11.5
- Python: 2.5.2
- SQLite: 3.5.9
- pysqlite: 2.3.2
- psycopg2: 2.0.7
Migrating to a custom schema fails with:
% ./sqlite2pg -e TransmissionTest -p 'postgres://transmission:XXX@localhost/transmission?schema=trac'
Traceback (most recent call last):
File "./sqlite2pg", line 335, in <module>
sys.exit(main(sys.argv[1:]))
File "./sqlite2pg", line 331, in main
Main(opts)
File "./sqlite2pg", line 244, in Main
pgenv = getPostgreSQLEnvironment(opts)
File "./sqlite2pg", line 220, in getPostgreSQLEnvironment
x.environment_created()
File "/usr/local/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/env.py", line 495, in environment_created
vals)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/db/util.py", line 75, in executemany
return self.cursor.executemany(sql_escape_percent(sql), args)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/db/util.py", line 75, in executemany
return self.cursor.executemany(sql_escape_percent(sql), args)
psycopg2.ProgrammingError: relation "component" does not exist
Migrating to the public schema fails differently:
% ./sqlite2pg -e TransmissionTest -p 'postgres://transmission:XXX@localhost/transmission'
Traceback (most recent call last):
File "./sqlite2pg", line 335, in <module>
sys.exit(main(sys.argv[1:]))
File "./sqlite2pg", line 331, in main
Main(opts)
File "./sqlite2pg", line 250, in Main
rc = tmigration.migrateTable(tname) or rc
File "./sqlite2pg", line 72, in migrateTable
rc = self.default_copy(table)
File "./sqlite2pg", line 93, in default_copy
pgcur.execute(insert_into, row)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/db/util.py", line 59, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
File "/usr/local/lib/python2.5/site-packages/Trac-0.11.5-py2.5.egg/trac/db/util.py", line 59, in execute
return self.cursor.execute(sql_escape_percent(sql), args)
psycopg2.DataError: invalid input syntax for integer: "query_tickets"
I had wiped the database before each attempt, in each case the script created the tables and sequences, though the tables were empty.
I can reproduce it, and can make the Trac environment available or arrange ssh access if that helps.
Attachments (0)
Change History (2)
comment:1 Changed 16 years ago by
comment:2 Changed 16 years ago by
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
The second error came from bogus entries in the original sqlite database - some strings where you'd expect integers, not sure how that happened. PostgreSQL was rightfully choking since it does enforce the data to be of the correct type.
I removed the entries manually and was able to migrate successfully, things have been working well since then (that was months ago, I just realized that ticket was still open).



Work-around:
The script is not properly setting up the tables but, since it clears them out before populating them, this works.