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.