Upgrade from 1.17.0 to 2.0.0 fails - psycopg2.errors.FeatureNotSupported: cannot alter type of a column used by a view or rule
See original GitHub issueImpacted versions 1.17.0 / 2.0.0
- OS Type: Ubuntu
- OS Version: 20.04 LTS
- Database Type: PostgreSQL
- Database version: 12.10
- Modoboa: 1.17.0 /2.0.0
- installer used: Yes
- Webserver: Nginx
Steps to reproduce
Following upgrade instructions:
sudo -u modoboa -i
bash
source instance/bin/activate
(env) pip install modoboa==2.0.0
(env) cd instance
(env) python manage.py migrate
Current behavior
(env) $ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, authtoken, contenttypes, core, dnstools, lib, limits, maillog, modoboa_amavis, modoboa_contacts, modoboa_dmarc, modoboa_postfix_autoreply, modoboa_radicale, otp_static, otp_totp, relaydomains, reversion, sessions, sites, transport
Running migrations:
Applying admin.0020_auto_20210130_2226...Traceback (most recent call last):
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.FeatureNotSupported: cannot alter type of a column used by a view or rule
DETAIL: rule _RETURN on view dkim depends on column "name"
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/base.py", line 83, in wrapped
res = handle_func(*args, **kwargs)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/core/management/commands/migrate.py", line 232, in handle
post_migrate_state = executor.migrate(
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/migrations/executor.py", line 117, in migrate
state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/migrations/executor.py", line 147, in _migrate_all_forwards
state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/migrations/executor.py", line 245, in apply_migration
state = migration.apply(state, schema_editor)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/migrations/migration.py", line 124, in apply
operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/migrations/operations/fields.py", line 249, in database_forwards
schema_editor.alter_field(from_model, from_field, to_field)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 534, in alter_field
self._alter_field(model, old_field, new_field, old_type, new_type,
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/postgresql/schema.py", line 122, in _alter_field
super()._alter_field(
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 680, in _alter_field
self.execute(
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/base/schema.py", line 137, in execute
cursor.execute(sql, params)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/srv/modoboa/env/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
django.db.utils.NotSupportedError: cannot alter type of a column used by a view or rule
DETAIL: rule _RETURN on view dkim depends on column "name"
Expected behavior
Migrate completes successfully.
Video/Screenshot link (optional)
N/A
Issue Analytics
- State:
- Created a year ago
- Comments:5 (2 by maintainers)
Top Results From Across the Web
ERROR: cannot alter type of a column used by a view or rule ...
The only possible way is to drop and re-create the view. But that is no problem, you can easily get the view definition...
Read more >How To Alter a Column Used By A View or Rule - Kagunda JM
PostgreSQL errors with cannot alter type of a column used by a view or rule when modifying table column definitions for a table...
Read more >How to Fix Cannot Alter Column Used by A View Errors
Here are the steps to fix this problem. Step 1: Drop the Views Which Depend on Task.Status. Step ...
Read more >ALTER TYPE | CockroachDB Docs
The ALTER TYPE statement modifies a user-defined data type in a database. ... You can only cancel ALTER TYPE schema change jobs that...
Read more >PostgreSQL: cannot alter type of a column used by a view or rule
ALTER TABLE t ALTER COLUMN t TYPE char(10); ERROR: cannot alter type of a column used by a view or rule DETAIL: rule...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
@Yanonix I pushed a fix in the installer repo
@nexusgoblin Looks like we need to update the documentation