最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL表名超長踩坑記

 更新時間:2026年05月06日 09:22:17   作者:小瓦碼J碼  
本文介紹了PostgreSQL表名最長長度為63個字符,而非常見的256或512個字符,并以刪除過期日志表為例,詳細(xì)描述了表名被截斷執(zhí)行導(dǎo)致誤刪的問題及其解決方法

你以為的PostgreSQL支持的表名最長長度是多少?256個字符?512個字符?

這里先賣個關(guān)子。

大家是否還記得之前流傳的Linux中 rm -rf ${LOG_DIR}/命令的一個梗,由于未傳參LOG_DIR變成了空值,于是執(zhí)行的命令就變成了rm -rf /,然后服務(wù)器根目錄就被刪除了個干干凈凈。

我也犯了類似的錯誤,我要把一個過期的日志表給刪除,由于表名超長了,并且被截斷執(zhí)行了,導(dǎo)致不該刪除的表也被刪除了。

模擬重現(xiàn)步驟如下:

第一步

創(chuàng)建模擬的正式表

-- 正式表建表語句
create table t_loooooooooooooooooooooooooooooooooooooooooong_name (name varchar(10));

第二步

將正式表重命名為備份表。

alter table t_loooooooooooooooooooooooooooooooooooooooooong_name rename to t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_20260303;

執(zhí)行時,你會發(fā)現(xiàn),居然成功執(zhí)行了??墒?,再仔細(xì)一看,怎么還有提示:

identifier "t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_20260303" will be truncated to "t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_202603"

第三步

根據(jù)備份表,重建一張正式表。你猜,這一步會成功執(zhí)行嗎?

答案是會的,并且會出現(xiàn)和第二步一樣的提示。

create table t_loooooooooooooooooooooooooooooooooooooooooong_name (like t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_20260303 including all);

第四步,重要的一步來了

假設(shè)我要滾動刪除20260302那天的備份表,這里有一個隱含邏輯是20260302暫時還不存在,因為這是個新邏輯。

執(zhí)行下面的SQL命令:

drop table t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_20260302;

結(jié)果你應(yīng)該能想到,又被截斷執(zhí)行了。并且把表t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_202603刪除了。也就是說,這個表剛剛備份出來就被刪除了。

結(jié)論

來看一下,截斷后的表名有多長。測試SQL如下:

select length('t_loooooooooooooooooooooooooooooooooooooooooong_name_bak_202603');

length|
------+
    63|

想不到吧,只有63個字符。

總結(jié)

關(guān)于這個特性,官方文檔Identifiers and Key Words一節(jié)是有說明的,原文如下:

The system uses no more than NAMEDATALEN-1 bytes of an identifier; longer names can be written in commands, but they will be truncated. By default, NAMEDATALEN is 64 so the maximum identifier length is 63 bytes. If this limit is problematic, it can be raised by changing the NAMEDATALEN constant in src/include/pg_config_manual.h.

大意是標(biāo)識符字節(jié)數(shù)不超過 NAMEDATALEN-1,具體是多少?就是 64-1=63。

需要注意的是,原文中提及了對于多字節(jié)字符,比如中文名稱,肯定達(dá)不到63,因為是按字節(jié)數(shù)算的。

我可以修改配置嗎?增大范圍。

不好意思,改不了,這個是編譯期常量。如果你要自己編譯一個版本是可以的。上面的原文引用已經(jīng)列出的源碼的修改位置了。

注意:官方說的是標(biāo)識符,沒說表名。也就是說類似,字段名、視圖名等等都是適用的。

參考

PostgreSQL: Documentation: 18: 4.1. Lexical Structure

到此這篇關(guān)于PostgreSQL表名超長踩坑記的文章就介紹到這了,更多相關(guān)PostgreSQL表名超長內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • postgresql中wal_level的三個參數(shù)用法說明

    postgresql中wal_level的三個參數(shù)用法說明

    這篇文章主要介紹了postgresql中wal_level的三個參數(shù)用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • postgresql 查看當(dāng)前用戶名的實現(xiàn)

    postgresql 查看當(dāng)前用戶名的實現(xiàn)

    這篇文章主要介紹了postgresql 查看當(dāng)前用戶名的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • pgsql 如何手動觸發(fā)歸檔

    pgsql 如何手動觸發(fā)歸檔

    這篇文章主要介紹了pgsql手動觸發(fā)歸檔的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL TIMESTAMP類型 時間戳操作

    PostgreSQL TIMESTAMP類型 時間戳操作

    這篇文章主要介紹了PostgreSQL TIMESTAMP類型 時間戳操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL?流復(fù)制配置環(huán)境搭建過程

    PostgreSQL?流復(fù)制配置環(huán)境搭建過程

    PostgreSQL 流復(fù)制是 9.0 提供的一種新的 WAL 傳遞方法,使用流復(fù)制時,每當(dāng) Primary 節(jié)點 WAL 產(chǎn)生,就會馬上傳遞到 Standby 節(jié)點,流復(fù)制提供異步和同步兩種模式,同步模式可以保障數(shù)據(jù) 0 丟失,這篇文章主要介紹了PostgreSQL?流復(fù)制搭建,需要的朋友可以參考下
    2023-09-09
  • Windows下Postgresql數(shù)據(jù)庫的下載與配置方法

    Windows下Postgresql數(shù)據(jù)庫的下載與配置方法

    這篇文章主要介紹了Windows下Postgresql數(shù)據(jù)庫的下載與配置方法 ,需要的朋友可以參考下
    2014-06-06
  • 深入解讀PostgreSQL中的序列及其相關(guān)函數(shù)的用法

    深入解讀PostgreSQL中的序列及其相關(guān)函數(shù)的用法

    這篇文章主要介紹了PostgreSQL中的序列及其相關(guān)函數(shù)的用法,包括序列的更新和刪除等重要知識,需要的朋友可以參考下
    2016-01-01
  • PostgreSQL打印實時查詢語句的三種方法

    PostgreSQL打印實時查詢語句的三種方法

    這篇文章主要介紹了三種PostgreSQL實時打印查詢的方法:1.通過日志配置記錄所有SQL;2.利用pg_stat_activity監(jiān)控活躍查詢;3.使用pg_stat_statements分析歷史性能,并提醒生產(chǎn)環(huán)境應(yīng)避免全量記錄以減少性能損耗,需要的朋友可以參考下
    2025-09-09
  • postgresql 中的COALESCE()函數(shù)使用小技巧

    postgresql 中的COALESCE()函數(shù)使用小技巧

    這篇文章主要介紹了postgresql 中的COALESCE()函數(shù)使用小技巧,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • postgresql關(guān)于like%xxx%的優(yōu)化操作

    postgresql關(guān)于like%xxx%的優(yōu)化操作

    這篇文章主要介紹了postgresql關(guān)于like%xxx%的優(yōu)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

昌平区| 旅游| 大埔县| 兴宁市| 凌海市| 兴业县| 突泉县| 芜湖县| 宝鸡市| 昌黎县| 右玉县| 长宁区| 霍林郭勒市| 嵊泗县| 宿迁市| 沈阳市| 汽车| 贵德县| 平泉县| 太谷县| 喜德县| 射洪县| 西峡县| 绥芬河市| 金川县| 濮阳县| 湖北省| 舒城县| 西青区| 沂源县| 延庆县| 芦溪县| 怀柔区| 汕头市| 柘荣县| 霍城县| 渝中区| 婺源县| 开江县| 榆树市| 威海市|