tutuca
tutuca

Reputation: 3670

Django dumpdata unable to serialize existing column

I'm getting bit trying to dumpdata from a legacy db i've recently did a reverse engineering using django's inspectdb... Other than this every query works fine. In MySQL workbench the column exists. But when trying to export the data I get:

CommandError: Unable to serialize database: no such column: af_datper.locnac

Using traceback doesn't reveal any of my lines affecting (pasted here not to pollute http://dpaste.com/1DASN1V).

The model field already admits null values for that column and the column does exists in the database (among seeing it with the workbench, inspectdb wouldn't have picked it up...

I honestly don't know what else to do. Any takers?

Upvotes: 2

Views: 2126

Answers (1)

Burhan Khalid
Burhan Khalid

Reputation: 174624

A bit of digging into your traceback, I see this:

File "venv/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "venv/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 323, in execute return Database.Cursor.execute(self, query, params) sqlite3.OperationalError: no such column: af_datper.locnac

From the SQLite documentation:

If a schema-name is specified, it must be either "main", "temp", or the name of an attached database. In this case the new table is created in the named database. If the "TEMP" or "TEMPORARY" keyword occurs between the "CREATE" and "TABLE" then the new table is created in the temp database. It is an error to specify both a schema-name and the TEMP or TEMPORARY keyword, unless the schema-name is "temp". If no schema name is specified and the TEMP keyword is not present then the table is created in the main database.

In short, sqlite doesn't support foo.bar as a column name, unless foo is the name of the database or one of main or temp.

Upvotes: 1

Related Questions