網站首頁 編程語言 正文
Oracle編碼集
AMERICAN_AMERICA.ZHS16GBK
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
場景
需要創建一個序列 但此時名稱長度定義的比平時長 導致無法創建
create sequence seq_s_OrderDetails_odid start with 10001 increment by 1;
根據報錯信息 可以查提示
ORA-12899:列"SCOTT"."OP_INFO"."ONAME”的值太大(實際值:23,最大值: 20)
select oname, length(oname) num from op_info order by num desc;
檢查發現序列名seq_s_OrderDetails_odid 的長度 23
select length('seq_s_OrderDetails_odid') from dual;
檢查客戶端編碼集為 SIMPLIFIED CHINESE_CHINA.ZHS16GBK
select userenv('language') from dual ;
同樣序列創建的代碼在其他環境下 可以創建成功
檢查客戶端編碼集為 AMERICAN_AMERICA.ZHS16GBK
而已知在Oracle中標識符最大長度是30個字符
PS:
標識符,即用戶自定義的關鍵詞,比較表名、字段名、視圖名、序列名、主鍵等,表名也屬于標識符,
原因:
Oracle里凡是需要命名的對象其標識符均不能超過30個字符,這是因為數據字典表的與記錄這些數據庫對象相關信息的系統表相關的字段的數據類型已經定義好了這樣的大小。
你可以查數據字典,里面有定義,依次為
USER_TABLES
USER_TAB_COLUMNS
USER_CONSTRAINTS
例如,USER_TABLES這個系統表視圖里對表名這個字段定義的數據類型就是varchar2(30),即這個字段最大只能為30個字節。
--1、查看表名長度的限制
select * from all_TAB_COLUMNS where table_name = 'USER_TABLES' and column_name ='TABLE_NAME';
--2、查看列名長度的限制
select * from all_TAB_COLUMNS where table_name = 'USER_TAB_COLUMNS' and column_name ='COLUMN_NAME';
--3、先看約束名稱的長度限制
select * from all_TAB_COLUMNS where table_name = 'USER_CONSTRAINTS' and column_name ='CONSTRAINT_NAME';
1、查看表名長度的限制
2、查看列名長度的限制
3、先看約束名稱的長度限制
臨時解決方案:
定義的序列名長度小于20 就可以成功!!!
-- 創建序列 seq_s_purdetail_pdid 剛好20
create sequence seq_s_purdetail_pdid start with 10001 increment by 1;
-- 查詢序列 注意用 system 用戶查詢
select * from dba_sequences where SEQUENCE_NAME = upper('seq_s_purdetail_pdid');
-- 刪除序列
drop sequence SEQ_S_PURDETAIL_PDID;
但終歸沒找到詳細原因 留下疑云重重。。。
待探究是否因兩種編碼集的區別導致 ???
PS
原文鏈接:https://blog.csdn.net/Klhz555/article/details/122883835
相關推薦
- 2022-04-28 SQL?Server索引結構的具體使用_MsSql
- 2022-05-06 Docker遠程連接設置的實現示例_docker
- 2024-03-09 【Redis】RedisTemplate和StringRedisTemplate的區別
- 2022-04-23 實現一個內容超出顯示省略號,并鼠標浮入顯示tooltip,不超出的不顯示tooltip組件
- 2022-11-17 python中關于os.path.pardir的一些坑_python
- 2022-12-10 C++中的結構體vector排序問題_C 語言
- 2022-12-04 Android?SurfaceView與TextureView使用方法詳細講解_Android
- 2022-05-11 xml中符號轉化
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支