报错信息

Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...' for column 'VARIABLE_VALUE' at row 518

自己遇到了这个问题,然后基本上把stackflow和所有博客上的解决方案都操作了一遍,在这里整理一下希望能帮助到更多的同学。

解决方法

首先放上flask连接数据库的代码:

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:password@127.0.0.1:3360/movie"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

遇到这个问题,一般上是编码问题,所以可以通过以下方法检查编码问题:

1.确认mysql数据库编码没问题:找到mysql安装目录,打开my.ini配置文件,检查default-character-set是否为utf8

2.再排除pycharm编码没问题:pycharm>>settting>>editor>>file encodings是否为utf8

3.通过命令行能进入mysql但是代码不能进入mysql,可能是连接方式的编码问题

 show variables like 'character%';  ——查看所有编码方式

 show create table table_name;   ——查看某个表格的编码方式

 status  ——查看

查看并修改mysql的编码方式,haracter_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码; character_set_results结果集的编码; character_set_server数据库服务器的编码; 只要保证以上四个采用的编码方式一样,就不会出现乱码问题。更具体的可以看这篇解答和这篇博客

都不行的话,可能编码方式没有问题,但是是实驱动的问题,解决办法如下:

具体如下:

1,在虚拟环境中安装

pip install mysql-connector

2.修改

app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:mysql@127.0.0.1:3306/goods"
为 app.config['SQLALCHEMY_DATABASE_URI'] = "mysql+mysqlconnector://root:mysql@127.0.0.1:3306/goods"

如果代码上没有问题的话,基本不可能是其他问题了。如果连接的时候显示:

authentication plugin 'caching_sha2_password'

这是加密方式有问题,看了stackflow上的一些解答,有这几种方法:

1.将环境安装为python3.6,因为3.5及以下版本不支持mysql的'caching_sha2_password'方法

2.通过

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

flush privileges;

查看数据加密方式的命令为:select host,user,plugin from mysql.user;

将所有的数据表变成这样:

mysql> select host,user,plugin from mysql.user;

+-----------+------------------+-----------------------+

| host      | user             | plugin                |

+-----------+------------------+-----------------------+

| %         | yun              | mysql_native_password |

| localhost | mysql.infoschema | mysql_native_password |

| localhost | mysql.session    | mysql_native_password |

| localhost | mysql.sys        | mysql_native_password |

| localhost | root             | mysql_native_password |

+-----------+------------------+-----------------------+

5 rows in set (0.00 sec)

3.reconfigure mysql server,进入mysql的安装界面,点击reconfigure将mysql的加密方式变为USE LEGACY..的加密方式就OK了

笔者试了所有的方法,最后一种才奏效,仅供参考。

最新文章

  1. [LeetCode] Tenth Line 第十行
  2. Yii2 数据操作Query Builder(转)
  3. iOS LLDB调试器和断点调试
  4. Oracle分页查询语句的写法(转)
  5. call和apply方法的理解
  6. JavaSE_ 面向对象 总目录(7~10)
  7. ThreadPoolExcuter源码解析(一)
  8. python 支付宝SDK
  9. caffe入门-人脸检测1
  10. C++程序设计方法3:自动类型转换
  11. 【SpringData学习】
  12. PL/SQL- ora-12154 '' TNS:could not resolve the connect identifier specified'
  13. SpringBoot的文件上传
  14. 火星A+B(hdu1230)进制转化
  15. C语言中以字符串形式输出枚举变量
  16. (快速幂)Key Set--hdu--5363
  17. 【ecshop】调用购物车商品数量
  18. java提升路线
  19. 2.redis配置
  20. 防护XSS

热门文章

  1. Wannafly #4 F 线路规划
  2. 使用 Python 发送短信?
  3. vs code 安装Scala
  4. win32 获取 HotKey 控件中的内容(HKM_GETHOTKEY)
  5. 文件上传框的美化+预览+ajax
  6. Poj 2602 Superlong sums(大数相加)
  7. HDOJ1728(限制转弯的迷宫问题)
  8. uboot的relocation原理详细分析
  9. C#设计模式(10)——组合模式
  10. android activity生命周期的一张经典图片