airflow 连接mysql5.7遇到的几个错误

MySQL5.7与MySQL8版本不同导致的密码加密方式问题

  • Airflow从sqlite迁移到mysql,默认的mysql密码加密方式是mysql_native_password
  • 而mysql8默认的密码加密方式是caching_sha2_password
  • 这个问题可通过使用mysql5.7来解决,如果一定要用mysql8,需要在my.cnf配置中就配置mysql_native_password加密方式

airflow自动创建数据库有瑕疵问题

{manager.py:560} ERROR - Add Permission to Role Error: __str__ returned non-string (type bytearray)    TypeError: unhashable type: 'bytearray' 

这两个错误,出现在Airflow 成功连接mysql,执行airflow db init ,创建用户的时候
一开始我怀疑,是数据库创建的问题,但数据库是airflow自己创建的,就感觉应该问题不在这里,折腾了很久。
包括但不限于换了几个版本的docker mysql,直连物理机mysql,甚至折腾了考虑换用PostgreSQL。
最后在一篇使用TensorFlow的纠错博文中发现有可能是数据库表中某一行的类型为utf8_bin,导致无法返回String导致,
导出数据库为sql文件后,查找发现有许多数据列都是utf8_bin类型,修改第一个表ad_view_menu的数据列name的类型为utf8_general_ci后。
错误消除