为啥mysql字段的Character和表的Charset不一致,用此字段查询就会报错呢??

  • 今天表里有中文数据要replace结果update xxx replace() where desc like '%xxx%'报错了。
  • 于是便打印下show create table xxxx (如下图),desc 字段因为要存放中文,所以添加character utf8,但表本身charset latin1.(不是我建的)

图片描述

  • 下图为查询的报错,单单这个desc字段报错,其余字段都是好好的,至于set names xxxx 都没用

图片描述

  • 不过我前台插入数据没问题,命令行不用desc作条件查询也没问题,请大佬赐教,为啥会出现这个问题?是不是character和charset不同导致的?那为何我web前台操作没问题呢?
阅读 2.4k
1 个回答

desc是mysql的关键字, 从终端做为字段名时输入时需要用反引号括起来使用

如:

SELECT * FROM your_table where `desc`='中文';

或者

SELECT * FROM your_table as t where t.desc='中文';

与字符集无关.

参见:
https://dev.mysql.com/doc/ref...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题