flask-sqlalchemy进行mysql数据库操作时,插入中文数据报错
在ubuntu系统下,当我要插入中文数据时,系统报错:
Warning: (1366, "Incorrect string value: '\xD6\xD0\xB9\xFA\xB1\xEA...'for column 'VARIABLE_VALUE' at row 345"
经查阅多方资料,发现是数据库编码问题,当mysql执行create database movie;操作时,默认编码是latin1,我们要改成utf8的。
于是进行了下述措施:
删掉之前建的数据库:drop database movie;
重建数据库:create database movie default character set utf8;
这样子做后,插入中文数据就不会报错了。
如果还报错,再继续下述操作:
- 将SQLALCHEMY_DATABASE_URI改成如下,注意加上?charset=utf8mb4
SQLALCHEMY_DATABASE_URI='mysql://[user_name]:[password]@[host]/[database_name]?charset=utf8mb4'
- db = SQLAlchemy(app)改成如下:
db = SQLAlchemy(app,use_native_unicode="utf8")
PS:
如果要让mysql执行create database 时默认编码改成utf8,可进行下述操作:
cd /etc/mysqlsudo vim my.conf- 添加下述操作
[mysqld]
character_set_server = utf8
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
- 保存文件后退出。之后重启mysql服务:
service mysql restart
- 之后,登录mysql后再执行
create database movie;就默认编码是utf8了。
再PS:
登录mysql命令:mysql -u用户名 -p密码
退出登录:\q
如果上述表述有任何问题,欢迎提出指正!感谢!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
