#35006: Django db_table_comment with sqlite database -----------------------------------+-------------------------------------- Reporter: FeroxTL | Owner: nobody Type: Bug | Status: new Component: Migrations | Version: dev Severity: Normal | Resolution: Keywords: sqlite migrations | Triage Stage: Unreviewed Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -----------------------------------+-------------------------------------- Description changed by FeroxTL:
Old description: > It seems that I have found a bug in all 4.2+ versions of Django > (including main branch and 5.0rc). I made a repo with steps to reproduce > and full description of the bug – GitHub - FeroxTL/django-sqlite-bug 3 . > Long story short: sqlite does not support comments, but when you change > (not create) `Meta.db_table_comment` sqlite backend > `django.db.backends.sqlite3.schema.DatabaseSchemaEditor` tries to > generate COMMENT sql and it obviously falls. > > {{{ > $./manage.py migrate > System check identified some issues: > > WARNINGS: > question.QuestionThree: (models.W046) SQLite does not support comments on > tables (db_table_comment). > Operations to perform: > Apply all migrations: admin, auth, contenttypes, question, sessions > Running migrations: > Applying question.0001_initial... OK > Applying question.0002_alter_questionthree_table_comment...Traceback > (most recent call last): > File "env/lib/python3.10/site-packages/django/db/backends/utils.py", > line 89, in _execute > return self.cursor.execute(sql, params) > File "env/lib/python3.10/site- > packages/django/db/backends/sqlite3/base.py", line 328, in execute > return super().execute(query, params) > sqlite3.OperationalError: near "COMMENT": syntax error > > The above exception was the direct cause of the following exception: > > Traceback (most recent call last): > File "proj/./manage.py", line 22, in <module> > main() > File "proj/./manage.py", line 18, in main > execute_from_command_line(sys.argv) > File "env/lib/python3.10/site- > packages/django/core/management/__init__.py", line 442, in > execute_from_command_line > utility.execute() > File "env/lib/python3.10/site- > packages/django/core/management/__init__.py", line 436, in execute > self.fetch_command(subcommand).run_from_argv(self.argv) > File "env/lib/python3.10/site-packages/django/core/management/base.py", > line 412, in run_from_argv > self.execute(*args, **cmd_options) > File "env/lib/python3.10/site-packages/django/core/management/base.py", > line 458, in execute > output = self.handle(*args, **options) > File "env/lib/python3.10/site-packages/django/core/management/base.py", > line 106, in wrapper > res = handle_func(*args, **kwargs) > File "env/lib/python3.10/site- > packages/django/core/management/commands/migrate.py", line 356, in handle > post_migrate_state = executor.migrate( > File "env/lib/python3.10/site- > packages/django/db/migrations/executor.py", line 135, in migrate > state = self._migrate_all_forwards( > File "env/lib/python3.10/site- > packages/django/db/migrations/executor.py", line 167, in > _migrate_all_forwards > state = self.apply_migration( > File "env/lib/python3.10/site- > packages/django/db/migrations/executor.py", line 252, in apply_migration > state = migration.apply(state, schema_editor) > File "env/lib/python3.10/site- > packages/django/db/migrations/migration.py", line 132, in apply > operation.database_forwards( > File "env/lib/python3.10/site- > packages/django/db/migrations/operations/models.py", line 610, in > database_forwards > schema_editor.alter_db_table_comment( > File "env/lib/python3.10/site- > packages/django/db/backends/base/schema.py", line 640, in > alter_db_table_comment > self.execute( > File "env/lib/python3.10/site- > packages/django/db/backends/base/schema.py", line 201, in execute > cursor.execute(sql, params) > File "env/lib/python3.10/site-packages/django/db/backends/utils.py", > line 102, in execute > return super().execute(sql, params) > File "env/lib/python3.10/site-packages/django/db/backends/utils.py", > line 67, in execute > return self._execute_with_wrappers( > File "env/lib/python3.10/site-packages/django/db/backends/utils.py", > line 80, in _execute_with_wrappers > return executor(sql, params, many, context) > File "env/lib/python3.10/site-packages/django/db/backends/utils.py", > line 84, in _execute > with self.db.wrap_database_errors: > File "env/lib/python3.10/site-packages/django/db/utils.py", line 91, in > __exit__ > raise dj_exc_value.with_traceback(traceback) from exc_value > File "env/lib/python3.10/site-packages/django/db/backends/utils.py", > line 89, in _execute > return self.cursor.execute(sql, params) > File "env/lib/python3.10/site- > packages/django/db/backends/sqlite3/base.py", line 328, in execute > return super().execute(query, params) > django.db.utils.OperationalError: near "COMMENT": syntax error > }}} New description: It seems that I have found a bug in all 4.2+ versions of Django (including main branch and 5.0rc). I made a repo with steps to reproduce and full description of the bug – https://github.com/FeroxTL/django-sqlite-bug . Long story short: sqlite does not support comments, but when you change (not create) `Meta.db_table_comment` sqlite backend `django.db.backends.sqlite3.schema.DatabaseSchemaEditor` tries to generate COMMENT sql and it obviously falls. {{{ $./manage.py migrate System check identified some issues: WARNINGS: question.QuestionThree: (models.W046) SQLite does not support comments on tables (db_table_comment). Operations to perform: Apply all migrations: admin, auth, contenttypes, question, sessions Running migrations: Applying question.0001_initial... OK Applying question.0002_alter_questionthree_table_comment...Traceback (most recent call last): File "env/lib/python3.10/site-packages/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "env/lib/python3.10/site- packages/django/db/backends/sqlite3/base.py", line 328, in execute return super().execute(query, params) sqlite3.OperationalError: near "COMMENT": syntax error The above exception was the direct cause of the following exception: Traceback (most recent call last): File "proj/./manage.py", line 22, in <module> main() File "proj/./manage.py", line 18, in main execute_from_command_line(sys.argv) File "env/lib/python3.10/site- packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "env/lib/python3.10/site- packages/django/core/management/__init__.py", line 436, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "env/lib/python3.10/site-packages/django/core/management/base.py", line 412, in run_from_argv self.execute(*args, **cmd_options) File "env/lib/python3.10/site-packages/django/core/management/base.py", line 458, in execute output = self.handle(*args, **options) File "env/lib/python3.10/site-packages/django/core/management/base.py", line 106, in wrapper res = handle_func(*args, **kwargs) File "env/lib/python3.10/site- packages/django/core/management/commands/migrate.py", line 356, in handle post_migrate_state = executor.migrate( File "env/lib/python3.10/site- packages/django/db/migrations/executor.py", line 135, in migrate state = self._migrate_all_forwards( File "env/lib/python3.10/site- packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards state = self.apply_migration( File "env/lib/python3.10/site- packages/django/db/migrations/executor.py", line 252, in apply_migration state = migration.apply(state, schema_editor) File "env/lib/python3.10/site- packages/django/db/migrations/migration.py", line 132, in apply operation.database_forwards( File "env/lib/python3.10/site- packages/django/db/migrations/operations/models.py", line 610, in database_forwards schema_editor.alter_db_table_comment( File "env/lib/python3.10/site- packages/django/db/backends/base/schema.py", line 640, in alter_db_table_comment self.execute( File "env/lib/python3.10/site- packages/django/db/backends/base/schema.py", line 201, in execute cursor.execute(sql, params) File "env/lib/python3.10/site-packages/django/db/backends/utils.py", line 102, in execute return super().execute(sql, params) File "env/lib/python3.10/site-packages/django/db/backends/utils.py", line 67, in execute return self._execute_with_wrappers( File "env/lib/python3.10/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers return executor(sql, params, many, context) File "env/lib/python3.10/site-packages/django/db/backends/utils.py", line 84, in _execute with self.db.wrap_database_errors: File "env/lib/python3.10/site-packages/django/db/utils.py", line 91, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "env/lib/python3.10/site-packages/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "env/lib/python3.10/site- packages/django/db/backends/sqlite3/base.py", line 328, in execute return super().execute(query, params) django.db.utils.OperationalError: near "COMMENT": syntax error }}} -- -- Ticket URL: <https://code.djangoproject.com/ticket/35006#comment:1> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/0107018c1f2f3281-6d8f6958-d38b-46fa-be8b-96e8133f0af3-000000%40eu-central-1.amazonses.com.