migrate时,无法把int(11)转成float

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:4.0.5
  • 【问题描述】:

在通过helm安装airflow平台时,有一个migration,是需要把int转化成float,系统提示:Unsupported modify column: type float not match origin int(11)

INFO [alembic.runtime.migration] Running upgrade 1b38cef5b76e -> 2e541a1dcfed, task_duration
Traceback (most recent call last):
File “/home/airflow/.local/lib/python3.6/site-packages/sqlalchemy/engine/base.py”, line 1248, in _execute_context
cursor, statement, parameters, context
File “/home/airflow/.local/lib/python3.6/site-packages/sqlalchemy/engine/default.py”, line 588, in do_execute
cursor.execute(statement, parameters)
File “/home/airflow/.local/lib/python3.6/site-packages/MySQLdb/cursors.py”, line 255, in execute
self.errorhandler(self, exc, value)
File “/home/airflow/.local/lib/python3.6/site-packages/MySQLdb/connections.py”, line 50, in defaulterrorhandler
raise errorvalue
File “/home/airflow/.local/lib/python3.6/site-packages/MySQLdb/cursors.py”, line 252, in execute
res = self._query(query)
File “/home/airflow/.local/lib/python3.6/site-packages/MySQLdb/cursors.py”, line 378, in _query
db.query(q)
File “/home/airflow/.local/lib/python3.6/site-packages/MySQLdb/connections.py”, line 280, in query
_mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (8200, ‘Unsupported modify column: type float not match origin int(11)’)

根据这个文档应该是不支持的。

  • 不支持将字段类型修改为其超集,例如不支持从 INTEGER 修改为 VARCHAR ,或者从 TIMESTAMP 修改为 DATETIME ,否则可能输出的错误信息 Unsupported modify column: type %d not match origin %d

那这个字段类型的超集,怎么判断?

4.0版本上不支持不同类型得变更,同类型的变更仅支持从小变大。
https://docs.pingcap.com/zh/tidb/stable/mysql-compatibility#ddl-的限制