超过 30 个字符的表名
Posted
技术标签:
【中文标题】超过 30 个字符的表名【英文标题】:Table Name with more than 30 characters 【发布时间】:2012-01-02 13:35:42 【问题描述】:我在 mysql 数据库中有一个表。表名长度超过 30 个字符 我想在 Oracle 11g 中制作同一张表,但 Oracle 只允许名称中最多包含 30 个字符的表。 不能把表名改成小于30字符,因为系统是基于这些表的,改名会花很多钱,所以改表名不是我的答案我正在寻找。
有一个名为user_tables
的表,当我描述该表时,它说table_name
字段的数据类型为varchar2(30)
,所以我尝试更改表并制作table_name varchar2(255)
,但我不能t,它给了我一个错误说:
ORA-00942: 表或视图不存在
我以sys
连接。
有人知道如何解决我的问题吗?
【问题讨论】:
不知道同义词是否支持超过 30 个字符;但这可能是一种解决方法。同义词名称的功能最大长度为 32 个字节。仅 Java 功能允许使用超过 30 个字节的名称。如果您指定的名称超过 30 个字节,则 Oracle 数据库会对该名称进行加密,并将加密的表示形式放在数据字典中。实际的加密是不可访问的,您不能使用原始规范或数据字典表示作为同义词名称。linkuser_tables
是数据字典的一部分,是一组只读表和视图。您不能更新数据字典中的任何对象。
如果您可以更新系统表,您绝对不知道它可能会对其他所有系统表产生什么影响。
【参考方案1】:
所有 Oracle 标识符都限制为 30 个字符。没有选项可以让您更改它。
【讨论】:
【参考方案2】:同义词无效:source。 30 的限制是严格而快速的。
编辑: 经过继续研究oracle docs 除非每个 cmets 都在此处安装了 java,否则即使是同义词也无法允许超过 30 个字符。
长话短说:你不能在 oracle 环境中做你想做的事。
【讨论】:
以上是关于超过 30 个字符的表名的主要内容,如果未能解决你的问题,请参考以下文章