Flask SQLAlchemy pymysql警告:(1366字符串值不正确)

Flask SQLAlchemy pymysql警告:(1366字符串值不正确),flask,sqlalchemy,character-encoding,flask-sqlalchemy,pymysql,Flask,Sqlalchemy,Character Encoding,Flask Sqlalchemy,Pymysql,我在我的flask应用程序中使用了一个本地MySQL(8.0.19)数据库。我以前从未遇到过这个问题(几个月前开始开发这个应用程序)。不确定发生了什么变化,应用程序的哪个组件得到了更新,但我现在不知从哪里得到了这个错误。我搜索并发现它可能是一些,但按照说明,我在打开应用程序时仍然会收到警告: C:\Users\MyUserName\AppData\Local\Programs\Python\Python37\lib\site packages\pymysql\cursors.py:170:War

我在我的flask应用程序中使用了一个本地
MySQL(8.0.19)
数据库。我以前从未遇到过这个问题(几个月前开始开发这个应用程序)。不确定发生了什么变化,应用程序的哪个组件得到了更新,但我现在不知从哪里得到了这个错误。我搜索并发现它可能是一些,但按照说明,我在打开应用程序时仍然会收到警告:

C:\Users\MyUserName\AppData\Local\Programs\Python\Python37\lib\site packages\pymysql\cursors.py:170:Warning: 
(1366, "Incorrect string value: '\\xF6z\\xE9p-e...' for column 'VARIABLE_VALUE' at row 1")
result = self._query(query)
这是我的url环境变量:

MYSQL_URL = mysql+pymysql://user:passoword@localhost:3306/testdb?charset=utf8mb4
这就是我创建db
会话的方式:

db_url = os.getenv('MYSQL_URL')
engine = create_engine(db_url, echo=True)

Session = sessionmaker()
Session.configure(bind=engine)
session = Session()
def row_count():
    return (
        session.query(Value.ValueID).count()
    )
这是
会话
最简单的用法:

db_url = os.getenv('MYSQL_URL')
engine = create_engine(db_url, echo=True)

Session = sessionmaker()
Session.configure(bind=engine)
session = Session()
def row_count():
    return (
        session.query(Value.ValueID).count()
    )
当我用HeidiSQL检查这个本地数据库时,它说它的排序规则是
utf8mb4\u 0900\u ai\u ci
。我不知道这些后缀的具体含义是什么,有大量的utf8mb4变体可用。这是默认值


有人知道如何解决这个警告吗?这到底是什么意思?因为我使用的是ORM,所以我没有手动创建任何数据库或运行任何查询,所以我应该如何处理这个问题?

ai:不区分重音

ci:不区分大小写

您是否尝试了以下URL:

MYSQL_URL = mysql+pymysql://user:passoword@localhost:3306/testdb?charset=utf8mb4_ai_ci 

ai:不区分重音

ci:不区分大小写

您是否尝试了以下URL:

MYSQL_URL = mysql+pymysql://user:passoword@localhost:3306/testdb?charset=utf8mb4_ai_ci 

这回答了你的问题吗?请在数据库中显示字符串的十六进制。这可能会让我们更深入地了解问题所在。@RickJames如何首先获得这个字符串的值?这似乎是生成的错误消息。我应该以某种方式捕捉它吗?连接后立即设置名称utf8mb4
。这是否回答了您的问题?请在数据库中显示字符串的十六进制。这可能会让我们更深入地了解问题所在。@RickJames如何首先获得这个字符串的值?这似乎是生成的错误消息。我应该以某种方式捕捉它吗?在连接后立即执行
设置名称utf8mb4
。它会抛出以下错误:
文件“C:\Users\Username\AppData\Local\Programs\Python\Python37\lib\site packages\pymysql\connections.py”,第283行,在uuuu init\uuuuuuuuuuuuuuu self.encoding=charset\u by\u name(self.charset)中.encoding AttributeError:'NoneType'对象没有属性'encoding'
哪个版本的MySQL?版本是8.0.19它抛出此错误:
文件“C:\Users\Username\AppData\Local\Programs\Python\37\lib\site packages\pymysql\connections.py”,第283行,在uuu init\uuuuuuuuuuuuuuuuself.encoding=charset\u by\u name(self.charset).encoding AttributeError:'NoneType'对象没有属性'encoding'
哪个版本的MySQL?版本是8.0.19