我的编程空间,编程开发者的网络收藏夹
学习永远不晚

postgresql插入汉字报错

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

postgresql插入汉字报错

错误信息:peimsmdb=# select '我';ERROR:  character with byte sequence 0xe6 0x88 0x91 in encoding "UTF8" has no equivalent in encoding "LATIN1"
查看客户端字符集:peimsmdb=# show client_encoding; client_encoding ----------------- UTF8
peimsmdb=# show server_encoding; server_encoding ----------------- LATIN1
思路:因为没有修改环境变量,导致安装完数据库,数据库默认字符集变成LATIN1,如下所示。
postgres=# \l                             List of databases   Name    |  Owner   | Encoding | Collate | Ctype |   Access privileges   -----------+----------+----------+---------+-------+----------------------- peimsmdb  | peimsmer | LATIN1   | en_US   | en_US | =Tc/peimsmer         +           |          |          |         |       | peimsmer=CTc/peimsmer postgres  | postgres | LATIN1   | en_US   | en_US |  template0 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +           |          |          |         |       | postgres=CTc/postgres template1 | postgres | LATIN1   | en_US   | en_US | =c/postgres          +           |          |          |         |       | postgres=CTc/postgres(4 rows)
所以如果一开始修改了环境变量,也不会出现之后的问题。修改环境变量# vi /etc/profileexport.UTF-8export LC_ALL=en_US.UTF-8export LC_CTYPE=en_US.UTF-8
# source /etc/profile
现在数据库已经安装,解决办法只能是在建库的时候指定字符集。
首先修改环境变量
命令参考:create database DATABASENAME with encoding = 'UTF8' LC_CTYPE = 'en_US.UTF-8' LC_COLLATE = 'en_US.UTF-8' template = template1;
在建库之前首先处理template0和template1两个表。
# psql -U postgres -d postgres -h 127.0.0.1
postgres=# update pg_database set datallowconn = TRUE where datname = 'template0';UPDATE 1postgres=# \c template0You are now connected to database "template0" as user "postgres".template0=# update pg_database set datistemplate = FALSE where datname = 'template1';UPDATE 1template0=# drop database template1;DROP DATABASEtemplate0=# create database template1 with encoding = 'UTF8' LC_CTYPE = 'en_US.UTF-8' LC_COLLATE = 'en_US.UTF-8' template = template0;CREATE DATABASEtemplate0=# update pg_database set datallowconn = TRUE where datname = 'template1';UPDATE 1template0=# \c template1You are now connected to database "template1" as user "postgres".template1=# update pg_database set datallowconn = FALSE where datname = 'template0';UPDATE 1参考:https://blog.csdn.net/hkyw000/article/details/52817422

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

postgresql插入汉字报错

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sqlite批量插入数据报错怎么解决

在SQLite中进行批量插入数据时,可能会遇到以下问题导致报错:数据格式不正确:确保插入的数据格式与表定义的格式一致,例如日期格式、数值格式等。主键冲突:插入的数据中存在重复的主键值,可以考虑使用INSERT OR REPLACE或INSE
sqlite批量插入数据报错怎么解决
2024-04-10

spring事务里面开启线程插入报错了会回滚吗

这篇文章主要讲解了“spring事务里面开启线程插入报错了会回滚吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“spring事务里面开启线程插入报错了会回滚吗”吧!1.前言一道非常有意思的面
2023-07-06

Oracle字符集不匹配导入dmp文件报错

在做文件迁移的时候在本地导出了一份dmp的备份文件,结果导入服务器的数据库的时候报错这个时候我们可以执行以下sql查看一下服务器的数据库字符集是什么select * from nls_database_parameters where parameter ="
Oracle字符集不匹配导入dmp文件报错
2019-03-14

spring事务里面开启线程插入报错了是否会回滚

这篇文章主要介绍了spring事务里面开启线程插入,报错了是否会回滚?这是小编遇到一道面试题,题目大概是这个样子,今天抽空通过示例代码给大家分析下,需要的朋友可以参考下
2023-05-15

Win8怎么关闭输入法文字转换错误报告提醒(很烦人)

Win8系统自带微软输入法,识别率高、内置超强字典词库,但有一个不好的地方就是用户使用聊天软件时,微软输入法就会弹出“文字转换错误”的提醒,让人很是无奈,那该怎么关闭这个提醒呢。Win8关闭微软输入法“文
2022-06-04

SQLServer 错误 611 无法插入或更新行,因为总可变列大小(包括系统开销)比限值多出 %d 个字节。 故障 处理 修复 支持远程

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 611 事件源 MSSQLSERVER 组件 SQLEngine 符号名称 VAR_SIZE_TOO_BIG 消息正文 ...
SQLServer 错误 611 无法插入或更新行,因为总可变列大小(包括系统开销)比限值多出 %d 个字节。 故障 处理 修复 支持远程
2023-11-05

编程热搜

目录