解决Mac mysql存入emoji的问题

来源:互联网 发布:阿里云飞天 编辑:程序博客网 时间:2024/05/17 10:40

最近在爬取微信公众号文章的过程中,发现文章中存在emoji时,会报以下错误:

pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x93\\xBD \\xC2...' for column 'article' at row 1")

报错原因:mysql utf-8 编码储存的是 2-3个的字节,而emoji则是4个字节。

在将数据库和数据表的字符集都改为utfmb4之后,发现还是不行参照博文:

原来还要在my.cnf里修改下mysqld的character-set-server,把它改为utf8mb4,然后重启mysqld,就可存入Emoji字符了。

以下是我的修改步骤:

  • 进入到 /usr/local/mysql/support-files 目录,发现Mac没有这个my.cnf
  • 既然没有,那就在桌面创建一个my.cnf,将以下代码复制其中:
# Example MySQL config file for small systems.## This is for a system with little memory (<= 64M) where MySQL is only used# from time to time and it's important that the mysqld daemon# doesn't use much resources.## MySQL programs look for option files in a set of# locations which depend on the deployment platform.# You can copy this option file to one of those# locations. For information about these locations, see:# http://dev.mysql.com/doc/mysql/en/option-files.html## In this file, you can use all long options that a program supports.# If you want to know which options a program supports, run the program# with the "--help" option.# The following options will be passed to all MySQL clients[client]default-character-set=utf8 # 修改此处默认数据集#password   = your_passwordport        = 3306socket      = /tmp/mysql.sock# Here follows entries for some specific programs# The MySQL server[mysqld]default-storage-engine=INNODBcharacter-set-server=utf8 # 修改此处collation-server=utf8_general_ci # 对应也需要修改port        = 3306socket      = /tmp/mysql.sockskip-external-lockingkey_buffer_size = 16Kmax_allowed_packet = 1Mtable_open_cache = 4sort_buffer_size = 64Kread_buffer_size = 256Kread_rnd_buffer_size = 256Knet_buffer_length = 2Kthread_stack = 128K# Don't listen on a TCP/IP port at all. This can be a security enhancement,# if all processes that need to connect to mysqld run on the same host.# All interaction with mysqld must be made via Unix sockets or named pipes.# Note that using this option without enabling named pipes on Windows# (using the "enable-named-pipe" option) will render mysqld useless!##skip-networkingserver-id   = 1# Uncomment the following if you want to log updates#log-bin=mysql-bin# binary logging format - mixed recommended#binlog_format=mixed# Causes updates to non-transactional engines using statement format to be# written directly to binary log. Before using this option make sure that# there are no dependencies between transactional and non-transactional# tables such as in the statement INSERT INTO t_myisam SELECT * FROM# t_innodb; otherwise, slaves may diverge from the master.#binlog_direct_non_transactional_updates=TRUE# Uncomment the following if you are using InnoDB tables#innodb_data_home_dir = /usr/local/mysql/data#innodb_data_file_path = ibdata1:10M:autoextend#innodb_log_group_home_dir = /usr/local/mysql/data# You can set .._buffer_pool_size up to 50 - 80 %# of RAM but beware of setting memory usage too high#innodb_buffer_pool_size = 16M#innodb_additional_mem_pool_size = 2M# Set .._log_file_size to 25 % of buffer pool size#innodb_log_file_size = 5M#innodb_log_buffer_size = 8M#innodb_flush_log_at_trx_commit = 1#innodb_lock_wait_timeout = 50[mysqldump]quickmax_allowed_packet = 16M[mysql]no-auto-rehash# Remove the next comment character if you are not familiar with SQL#safe-updates[myisamchk]key_buffer_size = 8Msort_buffer_size = 8M[mysqlhotcopy]interactive-timeout
  • 将修改后的文件my.cnf复制到 /etc 目录下。
  • 重启mysql

    解决了哈哈哈,hooray!

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 600018上港集团股票行情 上港股票 港港 里港 数据港 港都 港中 港区 600018股吧 600018 港币 港龙 上湾火车站北广场 麻龙湾清明上河园旅游 唐山麻龙湾清明上河园旅游 上湾 闲来垂钓碧溪上 上蒲溪瑶族乡 三明上清溪旅游 上清溪 闲来垂钓碧溪上忽复乘舟梦 恒大溪上桃花源 泰宁上清溪 上林溪售楼处电话 义乌上溪房价 上高泗溪那有宾馆 六宫之上 任晨溪 上林溪二手房 浅溪 自溪 上半溪 溪原 淡溪 溪里 陡溪 闻到龙标过五溪上一句 上溯