当前位置: 首页> 汽车> 报价 > 建一个公司网站花多少钱_科技强国形势与政策论文_搜索引擎技术优化_企业培训课程设计

建一个公司网站花多少钱_科技强国形势与政策论文_搜索引擎技术优化_企业培训课程设计

时间:2025/9/10 4:31:45来源:https://blog.csdn.net/weixin_41287260/article/details/144645648 浏览次数: 0次
建一个公司网站花多少钱_科技强国形势与政策论文_搜索引擎技术优化_企业培训课程设计

文章目录

    • 问题:标识符太长会被截断
    • 分析
      • 相关源码
      • 可以尝试以下案例


问题:标识符太长会被截断

在创建表时,发现表名太长会自动被截断,导致查询表时报错了。

分析

参考:https://www.postgresql.org/docs/current/limits.html

ItemUpper LimitComment
identifier length63 bytescan be increased by recompiling PostgreSQL

PostgreSQL里面限制标识符(库名、表名等)长度不能超过63个字节,虽然这个参数可以在编译时修改,但是一般都不会去修改(63其实已经够用了,相当于6个长的单词,如果这都说不清楚,那么建议用简称+comment的模式)。

相关源码

实际上定义的变量NAMEDATALEN为64,但是C语言字符串结尾字符 \0 占一个字节,所以用的时候使用 NAMEDATALEN-1来进行判断的,即63。

源码详见:src\interfaces\ecpg\include\sqlda-native.h

在线可参考:https://github.com/postgres/postgres/blob/master/src/interfaces/ecpg/include/sqlda-native.h#L8-L16

/** Maximum length for identifiers (e.g. table names, column names,* function names).  Names actually are limited to one fewer byte than this,* because the length must include a trailing zero byte.** This should be at least as much as NAMEDATALEN of the database the* applications run against.*/
/** 标识符的最大长度(例如表名、列名、函数名)。 名称实际上限制为比此少一个字节,因为长度必须包括一个尾随的零字节。** 这至少应该与应用程序运行所针对的数据库的 NAMEDATALEN 一样多。*/
#define NAMEDATALEN 64

可以尝试以下案例

-- 如果超过63(>63,可以为63)会被自动截断,会有提示(NOTICE),但是不会报错
SELECT repeat('d', 64);
create database dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd;
-- > NOTICE:  identifier "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" will be truncated to "ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
SELECT length(datname),* from pg_database;
-- 63	ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd

ps:注意这里的63是字节,如果是中文的话是21个中文,但是强烈不推荐使用中文标识符。

关键字:建一个公司网站花多少钱_科技强国形势与政策论文_搜索引擎技术优化_企业培训课程设计

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: