直接使用Helm方式升级,在初始化MySQL的过程中出现两个报错
报错一:
/opt/py3/lib/python3.11/site-packages/httpsig/__init__.py:1: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import get_distribution, DistributionNotFound
2025-10-14 20:42:30 [INFO] init sqlite db /opt/jumpserver/data/system/leak_passwords.db
2025-10-14 20:42:30 [DEBU] Start subscribe for expire orgs mapping from memory
2025-10-14 20:42:30 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:42:30 [DEBU] Start subscribe vault change
2025-10-14 20:42:30 [INFO] Start subscribe for stop job execution
2025-10-14 20:42:30 [DEBU] Start subscribe setting change
2025-10-14 20:42:30 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:42:31 Collect static files
2025-10-14 20:42:31 Collect static files done
2025-10-14 20:42:31 Check database structure change ...
2025-10-14 20:42:31 Migrate model change to database ...
Operations to perform:
Apply all migrations: accounts, acls, admin, assets, audits, auth, authentication, captcha, contenttypes, django_cas_ng, django_celery_beat, labels, notifications, ops, orgs, perms, rbac, sessions, settings, terminal, tickets, users
Running migrations:
2025-10-14 20:42:33 Perform migrate failed
Traceback (most recent call last):
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'assets_myasset' already exists")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/jumpserver/./jms", line 203, in <module>
upgrade_db()
File "/opt/jumpserver/./jms", line 137, in upgrade_db
perform_db_migrate()
File "/opt/jumpserver/./jms", line 92, in perform_db_migrate
raise e
File "/opt/jumpserver/./jms", line 89, in perform_db_migrate
management.call_command('migrate')
File "/opt/py3/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
state = migration.apply(state, schema_editor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/migration.py", line 130, in apply
operation.database_forwards(
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/operations/models.py", line 96, in database_forwards
schema_editor.create_model(model)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 447, in create_model
self.execute(sql, params or None)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/opt/py3/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1050, "Table 'assets_myasset' already exists")
根据报错一的信息,确认assets_myasset表中无数据后,删除assets_myasset表
drop table assets_myasset
继续部署
报错二:
/opt/py3/lib/python3.11/site-packages/httpsig/__init__.py:1: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import get_distribution, DistributionNotFound
2025-10-14 20:48:06 [INFO] init sqlite db /opt/jumpserver/data/system/leak_passwords.db
2025-10-14 20:48:07 [DEBU] Start subscribe for expire orgs mapping from memory
2025-10-14 20:48:07 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:48:07 [DEBU] Start subscribe vault change
2025-10-14 20:48:07 [INFO] Start subscribe for stop job execution
2025-10-14 20:48:07 [DEBU] Start subscribe setting change
2025-10-14 20:48:07 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:48:07 Collect static files
2025-10-14 20:48:07 Collect static files done
2025-10-14 20:48:07 Check database structure change ...
2025-10-14 20:48:07 Migrate model change to database ...
Operations to perform:
Apply all migrations: accounts, acls, admin, assets, audits, auth, authentication, captcha, contenttypes, django_cas_ng, django_celery_beat, labels, notifications, ops, orgs, perms, rbac, sessions, settings, terminal, tickets, users
Running migrations:
2025-10-14 20:48:10 Perform migrate failed
Traceback (most recent call last):
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (3780, "Referencing column 'asset_id' and referenced column 'id' in foreign key constraint 'assets_myasset_asset_id_eff8cabd_fk_assets_asset_id' are incompatible.")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/jumpserver/./jms", line 203, in <module>
upgrade_db()
File "/opt/jumpserver/./jms", line 137, in upgrade_db
perform_db_migrate()
File "/opt/jumpserver/./jms", line 92, in perform_db_migrate
raise e
File "/opt/jumpserver/./jms", line 89, in perform_db_migrate
management.call_command('migrate')
File "/opt/py3/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 249, in apply_migration
with self.connection.schema_editor(
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 164, in __exit__
self.execute(sql)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/opt/py3/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (3780, "Referencing column 'asset_id' and referenced column 'id' in foreign key constraint 'assets_myasset_asset_id_eff8cabd_fk_assets_asset_id' are incompatible.")
Applying assets.0005_myasset...
根据上述报错,是编码问题导致的,综合排查流程如下:
1、排查表结构
SHOW CREATE TABLE assets_asset \G;
*************************** 1. row ***************************
Table: assets_asset
Create Table: CREATE TABLE `assets_asset` (
`id` char(32) NOT NULL,
`address` varchar(767) NOT NULL,
`name` varchar(128) NOT NULL,
`is_active` tinyint(1) NOT NULL,
`created_by` varchar(128) DEFAULT NULL,
`date_created` datetime(6) DEFAULT NULL,
`comment` longtext NOT NULL,
`domain_id` char(32) DEFAULT NULL,
`org_id` varchar(36) NOT NULL,
`platform_id` int NOT NULL,
`connectivity` varchar(16) NOT NULL,
`date_verified` datetime(6) DEFAULT NULL,
`date_updated` datetime(6) NOT NULL,
`updated_by` varchar(128) DEFAULT NULL,
`custom_info` json NOT NULL DEFAULT (_utf8mb3'{}'),
`gathered_info` json NOT NULL DEFAULT (_utf8mb3'{}'),
PRIMARY KEY (`id`),
UNIQUE KEY `assets_asset_org_id_hostname_13a2c598_uniq` (`org_id`,`name`),
KEY `assets_asset_ip_ceeb994c` (`address`),
KEY `assets_asset_domain_id_bda54057_fk_assets_domain_id` (`domain_id`),
KEY `assets_asset_org_id_f25200c7` (`org_id`),
KEY `assets_asset_platform_id_b2b0830c_fk_assets_platform_id` (`platform_id`),
CONSTRAINT `assets_asset_domain_id_bda54057_fk_assets_domain_id` FOREIGN KEY (`domain_id`) REFERENCES `assets_domain` (`id`),
CONSTRAINT `assets_asset_platform_id_b2b0830c_fk_assets_platform_id` FOREIGN KEY (`platform_id`) REFERENCES `assets_platform` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3
SHOW CREATE TABLE assets_myasset \G;
*************************** 1. row ***************************
Table: assets_myasset
Create Table: CREATE TABLE `assets_myasset` (
`created_by` varchar(128) DEFAULT NULL,
`updated_by` varchar(128) DEFAULT NULL,
`date_created` datetime(6) DEFAULT NULL,
`date_updated` datetime(6) NOT NULL,
`id` char(32) NOT NULL,
`name` varchar(128) NOT NULL,
`comment` varchar(512) NOT NULL,
`asset_id` char(32) NOT NULL,
`user_id` char(32) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `assets_myasset_user_id_asset_id_d2fd9886_uniq` (`user_id`,`asset_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
发现两个表的编码不一致,一个是utf8mb3,一个是utf8mb4,实际应该是utf8mb4才对
2、修改表结构
ALTER TABLE assets_myasset CONVERT TO CHARACTER SET utf8mb3;
改完之后继续部署发现依旧报错
/opt/py3/lib/python3.11/site-packages/httpsig/__init__.py:1: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import get_distribution, DistributionNotFound
2025-10-14 20:48:06 [INFO] init sqlite db /opt/jumpserver/data/system/leak_passwords.db
2025-10-14 20:48:07 [DEBU] Start subscribe for expire orgs mapping from memory
2025-10-14 20:48:07 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:48:07 [DEBU] Start subscribe vault change
2025-10-14 20:48:07 [INFO] Start subscribe for stop job execution
2025-10-14 20:48:07 [DEBU] Start subscribe setting change
2025-10-14 20:48:07 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:48:07 Collect static files
2025-10-14 20:48:07 Collect static files done
2025-10-14 20:48:07 Check database structure change ...
2025-10-14 20:48:07 Migrate model change to database ...
Operations to perform:
Apply all migrations: accounts, acls, admin, assets, audits, auth, authentication, captcha, contenttypes, django_cas_ng, django_celery_beat, labels, notifications, ops, orgs, perms, rbac, sessions, settings, terminal, tickets, users
Running migrations:
2025-10-14 20:48:10 Perform migrate failed
Traceback (most recent call last):
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (3780, "Referencing column 'asset_id' and referenced column 'id' in foreign key constraint 'assets_myasset_asset_id_eff8cabd_fk_assets_asset_id' are incompatible.")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/jumpserver/./jms", line 203, in <module>
upgrade_db()
File "/opt/jumpserver/./jms", line 137, in upgrade_db
perform_db_migrate()
File "/opt/jumpserver/./jms", line 92, in perform_db_migrate
raise e
File "/opt/jumpserver/./jms", line 89, in perform_db_migrate
management.call_command('migrate')
File "/opt/py3/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 249, in apply_migration
with self.connection.schema_editor(
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 164, in __exit__
self.execute(sql)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/opt/py3/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (3780, "Referencing column 'asset_id' and referenced column 'id' in foreign key constraint 'assets_myasset_asset_id_eff8cabd_fk_assets_asset_id' are incompatible.")
Applying assets.0005_myasset...root@jumpserver-master01:~#
root@jumpserver-master01:~#
root@jumpserver-master01:~#
root@jumpserver-master01:~#
root@jumpserver-master01:~# kubectl -n jumpserver logs -f dc4-jumpserver-jms-init-db-rq2gk
jumpserver-mysql-svc no init sleep 120s
/opt/py3/lib/python3.11/site-packages/httpsig/__init__.py:1: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import get_distribution, DistributionNotFound
2025-10-14 20:51:19 [INFO] init sqlite db /opt/jumpserver/data/system/leak_passwords.db
2025-10-14 20:51:19 [DEBU] Start subscribe for expire orgs mapping from memory
2025-10-14 20:51:19 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:51:19 [DEBU] Start subscribe vault change
2025-10-14 20:51:19 [INFO] Start subscribe for stop job execution
2025-10-14 20:51:19 [DEBU] Start subscribe setting change
2025-10-14 20:51:19 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:51:19 Collect static files
2025-10-14 20:51:20 Collect static files done
2025-10-14 20:51:20 Check database structure change ...
2025-10-14 20:51:20 Migrate model change to database ...
Operations to perform:
Apply all migrations: accounts, acls, admin, assets, audits, auth, authentication, captcha, contenttypes, django_cas_ng, django_celery_beat, labels, notifications, ops, orgs, perms, rbac, sessions, settings, terminal, tickets, users
Running migrations:
2025-10-14 20:51:22 Perform migrate failed
Traceback (most recent call last):
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'assets_myasset' already exists")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/jumpserver/./jms", line 203, in <module>
upgrade_db()
File "/opt/jumpserver/./jms", line 137, in upgrade_db
perform_db_migrate()
File "/opt/jumpserver/./jms", line 92, in perform_db_migrate
raise e
File "/opt/jumpserver/./jms", line 89, in perform_db_migrate
management.call_command('migrate')
File "/opt/py3/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
state = migration.apply(state, schema_editor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/migration.py", line 130, in apply
operation.database_forwards(
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/operations/models.py", line 96, in database_forwards
schema_editor.create_model(model)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 447, in create_model
self.execute(sql, params or None)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/opt/py3/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1050, "Table 'assets_myasset' already exists")
Applying assets.0005_myasset...root@jumpserver-master01:~# kubectl -n jumpserver logs -f dc4-jumpserver-jms-init-db-rq2gk
jumpserver-mysql-svc no init sleep 120s
/opt/py3/lib/python3.11/site-packages/httpsig/__init__.py:1: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import get_distribution, DistributionNotFound
2025-10-14 20:51:19 [INFO] init sqlite db /opt/jumpserver/data/system/leak_passwords.db
2025-10-14 20:51:19 [DEBU] Start subscribe for expire orgs mapping from memory
2025-10-14 20:51:19 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:51:19 [DEBU] Start subscribe vault change
2025-10-14 20:51:19 [INFO] Start subscribe for stop job execution
2025-10-14 20:51:19 [DEBU] Start subscribe setting change
2025-10-14 20:51:19 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:51:19 Collect static files
2025-10-14 20:51:20 Collect static files done
2025-10-14 20:51:20 Check database structure change ...
2025-10-14 20:51:20 Migrate model change to database ...
Operations to perform:
Apply all migrations: accounts, acls, admin, assets, audits, auth, authentication, captcha, contenttypes, django_cas_ng, django_celery_beat, labels, notifications, ops, orgs, perms, rbac, sessions, settings, terminal, tickets, users
Running migrations:
2025-10-14 20:51:22 Perform migrate failed
Traceback (most recent call last):
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'assets_myasset' already exists")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/jumpserver/./jms", line 203, in <module>
upgrade_db()
File "/opt/jumpserver/./jms", line 137, in upgrade_db
perform_db_migrate()
File "/opt/jumpserver/./jms", line 92, in perform_db_migrate
raise e
File "/opt/jumpserver/./jms", line 89, in perform_db_migrate
management.call_command('migrate')
File "/opt/py3/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
state = migration.apply(state, schema_editor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/migration.py", line 130, in apply
operation.database_forwards(
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/operations/models.py", line 96, in database_forwards
schema_editor.create_model(model)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 447, in create_model
self.execute(sql, params or None)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/opt/py3/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1050, "Table 'assets_myasset' already exists")
Applying assets.0005_myasset...root@jumpserver-master01:~# kubectl -n jumpserver logs -f dc4-jumpserver-jms-init-db-rh5c2
root@jumpserver-master01:~# kubectl -n jumpserver logs -f dc4-jumpserver-jms-init-db-rh5c2
jumpserver-mysql-svc no init sleep 120s
/opt/py3/lib/python3.11/site-packages/httpsig/__init__.py:1: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
from pkg_resources import get_distribution, DistributionNotFound
2025-10-14 20:55:12 [INFO] init sqlite db /opt/jumpserver/data/system/leak_passwords.db
2025-10-14 20:55:12 [DEBU] Start subscribe for expire orgs mapping from memory
2025-10-14 20:55:12 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:55:12 [DEBU] Start subscribe vault change
2025-10-14 20:55:12 [INFO] Start subscribe for stop job execution
2025-10-14 20:55:12 [DEBU] Start subscribe setting change
2025-10-14 20:55:12 [DEBU] Start subscribe for expire node assets id mapping from memory
2025-10-14 20:55:12 Collect static files
2025-10-14 20:55:13 Collect static files done
2025-10-14 20:55:13 Check database structure change ...
2025-10-14 20:55:13 Migrate model change to database ...
Operations to perform:
Apply all migrations: accounts, acls, admin, assets, audits, auth, authentication, captcha, contenttypes, django_cas_ng, django_celery_beat, labels, notifications, ops, orgs, perms, rbac, sessions, settings, terminal, tickets, users
Running migrations:
2025-10-14 20:55:15 Perform migrate failed
Traceback (most recent call last):
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'assets_myasset' already exists")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/jumpserver/./jms", line 203, in <module>
upgrade_db()
File "/opt/jumpserver/./jms", line 137, in upgrade_db
perform_db_migrate()
File "/opt/jumpserver/./jms", line 92, in perform_db_migrate
raise e
File "/opt/jumpserver/./jms", line 89, in perform_db_migrate
management.call_command('migrate')
File "/opt/py3/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/core/management/commands/migrate.py", line 349, in handle
post_migrate_state = executor.migrate(
^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
state = self.apply_migration(
^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/executor.py", line 252, in apply_migration
state = migration.apply(state, schema_editor)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/migration.py", line 130, in apply
operation.database_forwards(
File "/opt/py3/lib/python3.11/site-packages/django/db/migrations/operations/models.py", line 96, in database_forwards
schema_editor.create_model(model)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 447, in create_model
self.execute(sql, params or None)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/base/schema.py", line 199, in execute
cursor.execute(sql, params)
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 67, in execute
return self._execute_with_wrappers(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 84, in _execute
with self.db.wrap_database_errors:
File "/opt/py3/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/django/db/backends/mysql/base.py", line 75, in execute
return self.cursor.execute(query, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/opt/py3/lib/python3.11/site-packages/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1050, "Table 'assets_myasset' already exists")
Applying assets.0005_myasset
3、再次修改表结构
ALTER TABLE assets_asset CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
改完之后发现有依赖
ERROR 3780 (HY000): Referencing column 'domain_id' and referenced column 'id' in foreign key constraint 'assets_asset_domain_id_bda54057_fk_assets_domain_id' are incompatible.
这说明还有很多的表需要修改,一个一个的修改非常的不现实
4、查询官网,确认官方的处理办法
https://github.com/jumpserver/jumpserver/issues/14211#issuecomment-2376577808
最终找到方法

到此,找到解决方案,开始测试并正式使用
最终解决办法是:
1、备份数据库
2、删除数据库里面的数据,使用新版本重新构建堡垒机
3、删除新构建的数据库里面的数据
4、把备份里面的CHARSET=utf8mb3改成CHARSET=utf8mb4
sed -i 's/CHARSET=utf8mb3/CHARSET=utf8mb4/g' jumpserver_utf8mb4.sql
5、导入数据库
6、删除所有Pod,让Pod自动重建
7、堡垒机服务恢复