Oracle 常见错误代码处理 08102-32001

目录

不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

java.sql.SQLException: 无效的列类型

java.sql.SQLException: 数字溢出

OracleOraDb11g_home1TNSListener服务启动后停止

ORA-08102: index key not found

ORA-14402:更新分区关键字列将导致分区的更改

ORA-12514: TNS:监听程序当前无法识别连接描述符中请求的服务

ORA-12704:字符集不匹配

ORA-12899 实际值 2 最大值 1

ORA-16000:数据库或可插入数据库是以只读访问方式打开的

ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes(缓冲区溢出)

ORA-28002: the password will expire within 7 days

ORA-28040: No matching authencation  protocol

ORA-28231: 没有数据传递到 obfuscation 工具箱

ORA-30186: ''\'' 的后面必须为四个十六进制的字符或另一个 ''\''

ORA-30556: 在要修改的列上已定义函数索引或位图联接索引

ORA-30553: The function is not deterministic

ORA-30926:无法在源表中获得一组稳定的行

ORA-32001: 已请求写入 SPFILE, 但是没有正在使用的 SPFILE

ORA-32594: COMMENT 命今的对象类别无效


不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK

1、访问 Oracle 的时候,突然报错 'Caused by: java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK'

2、原因可能是因为 Oracle 驱动的版本与 Oralce 的版本不太兼容导致的,比如 Oracle 11g 到 19c 都是使用的 ojdbc8,但实际上不同的 Oracle 版本,对应的 ojdbc8 也有不同的版本。

3、解决办法:按着报错提示提供对应版本的 orai18n,如:

        <!--Oracle 19c 版本驱动-->
        <dependency>
            <groupId>com.oracle.ojdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <version>19.3.0.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.oracle.database.nls/orai18n -->
        <!-- 解决报错:java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK-->
        <dependency>
            <groupId>com.oracle.database.nls</groupId>
            <artifactId>orai18n</artifactId>
            <version>19.3.0.0</version>
        </dependency>

java.sql.SQLException: 无效的列类型

1、使用 Spring 原生的 JdbcUtils 或者 JdbcTemplate 操作数据时,如果占位符参数的值是 List

数组等对象,就会报错:无效的列类型

2、比如配置了两个财政生效月份字段,此时传入后台的数据不是字符串,而是字符串数组,如 cz_date : ["1","2"],从而底层操作数据时就会报错:java.sql.SQLException: 无效的列类型

insert into BAS_PERSON_MONTH(per_id,biz_key,iden_no,per_name,m_pos_sala,m_grad_sala,m_nation_reg_sub,m_local_reg_sub,m_merit_pay,m_retiremen_fee,m_retirement_fee,start_date,end_date,m_gwjt,m_gjjt_qt,m_gwjtbt,m_dfjt_qt,cz_date) 
values ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

java.sql.SQLException: 数字溢出

1、比如数据库中的字段是 number 类型,存储的是 20264142218,然后实体对象中是 int 类型,代码查询结果封装数据对象时就会报错。

2、因为 Java int 数据范围 [-2,147,483,648~2,147,483,647]

OracleOraDb11g_home1TNSListener服务启动后停止

1、问题复现:有时候连接 Oralce 的时候发现连接不上,然后打开 "services.msc" 服务面板发现 xxxxTNSListener 监听服务没有启动,当手动启动监听服务的时候,它弹框提示:“本地计算机上的OracleOraDb11g_home1TNSListener服务启动后停止。某些服务在未由其他服务或程序使用时将自动停止。”

2、产生原因:Oracle 数据库通常都会提供远程访问,比如小张电脑上安装了 Oralce 数据库,小李、小刘就可以直接访问小张的Oracle。Oracle 开启远程访问,需要在配置文件中设置本机 ip 地址,这样其它人才能通过 IP 访问,然而当 IP 在某些情况下发生变化时,比如切换了网络,或者是动态 IP 等情况,Oracle 监听器监听的 IP 与计算机实际 IP 就会不一致,然后就会发生上面的错误。

3、解决方式:找到 Oracle 数据库安装目录下的 listener.ora 文件,比如 C:\app\Think\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora。然后修改其中监听的 IP 为 Oralce 服务器所在的实际 IP 地址,比如下面的 192.168.3.195。最后再次启动监听服务即可正常

4、DESCRIPTION_LIST 下面默认只有 localhost,只允许本机访问,如果需要被远程访问,则复制一个 DESCRIPTION,然后修改 HOST 为本机 IP 即可。

# listener.ora Network Configuration File: C:\app\Think\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\Think\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\Think\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
	(DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.195)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = C:\app\Think

5、比如在公司使用有线网络时是固定IP1,回家后使用WIFI时是动态IP2,此时频繁修改监听也比较麻烦,如果自己的电脑不需要被其他人访问,则可以直接去掉配置,只留 localhost 或者 127.0.0.1,或者直接配置为计算机名称。

ORA-08102: index key not found

 1、https://wangmaoxiong.blog.csdn.net/article/details/90702872#基于函数的索引

ORA-14402:更新分区关键字列将导致分区的更改

1、Oracle 分区表创建之后,如果修改分区字段的值,默认就会报错:ORA-14402:更新分区关键字列将导致分区的更改

2、通常分区字段不需要修改,也不建议修改,如果一定要修改,则和 flashback 闪回数据一样,需要为表开启'行移动'功能。

--为指定表开启行移动功能
alter table tableName enable row movement;
--为指定表关闭行移动功能
alter table tableName disable row movement;

ORA-12514: TNS:监听程序当前无法识别连接描述符中请求的服务

1、使用 PL/sql 工具连接 Oracle 数据库的时候,报错提示如下:

2、首先检查 oracle 服务是否已经启动,启动后继续下面的操作。

3、找到 oracle 安装目录 (如 C:\app\Think\admin\orcl\pfile) 下的 init.ora.xxx 的文件,用编辑器打开找到 local_listener 行

4、找到 oracle 安装目录(如 C:\app\Think\product\11.2.0\dbhome_1\NETWORK\ADMIN)下的 tnsnames.ora 文件,打开并复制其中的 LISTENER_ORCL 的值,如 (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

5、最后粘贴到 init.ora.xxx 文件中的 local_listener 中,如:local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))"

6、最后进入 cmd 中执行以下命令(pfile的值就是上面的 init.ora.xxx文件):

cmd 中执行:sqlplus

cmd 中执行,连接到空闲例程:sys/system as sysdba     

执行 sql,pfile 启动:startup pfile='C:\app\Think\admin\orcl\pfile\init.ora.1123201992052'

7、出现数据库装载完成,数据库已经打开的提示,那么就可以正常的登录了!

ORA-12704:字符集不匹配

1、在使用集合运算时,比如 Union all 连接,若A集合中某列为 nvarchar2 或 nvarchar 类型,而B集合中无此列或者列类型不一致,则会报字符集不匹配。

--报错:ORA-12704:字符集不匹配 (亚洲 是 nvarchar2、美洲 是 varchar2)
select '中国', 'China', cast('亚洲' as nvarchar2(10)) from dual
union all
select '美国', 'USA', cast('美洲' as varchar2(10))  from dual;

--报错:ORA-12704:字符集不匹配 (亚洲 是 nvarchar2、'' 是 varchar2)
select '中国', 'China', cast('亚洲' as nvarchar2(10)) from dual
union all
select '美国', 'USA', ''  from dual;

--正确:亚洲 转为和 美洲 一致
select '中国', 'China', to_char(cast('亚洲' as nvarchar2(10))) from dual
union all
select '美国', 'USA', cast('美洲' as varchar2(10))  from dual;

--正确:美洲 转为和 亚洲 一致
select '中国', 'China', cast('亚洲' as nvarchar2(10)) from dual
union all
select '美国', 'USA', N'美洲'  from dual;

ORA-12899 实际值 2 最大值 1

1、ORA-12899: value too large for column "ELEMENT"."BAS_PERSON_IMP"."SEX_CODE" (actual: 2, maximum: 1)

2、这是因为存储内容超出了字段的长度 ,比如 sex_code varchar2(1),则插入 1或者2可以,而插入男或女就会报错,因为 Oracle 中一个汉字占两个长度。

ORA-16000:数据库或可插入数据库是以只读访问方式打开的

1、通常是访问的地址只有只读权限导致的,无法进行增删改等操作。

ORA-20000: ORU-10027: buffer overflow, limit of 10000 bytes(缓冲区溢出)

1、在存储过程、存储函数、PL/SQL 中使用 dbms_output.put、dbms_output.put_line 输出日志信息时,输出的内容大小由 DBMS_OUTPUT.ENABLE 的 buffer_size 控制,默认为 20000,每行最大的限制是32k。如果输出内容超过缓冲区大小,则会报此错。

2、解决办法:

方式1)直接注释掉日志输出语句。
方式2)如果是使用 PLSQL Developer 工具,则切换到[输出]页签,修改"缓冲区大小",调大或者清空都行。
方式3)修改脚本,在 begin 修改缓冲区大小:
		DBMS_OUTPUT.ENABLE(buffer_size => 100000); -- 指定缓冲区大小
        DBMS_OUTPUT.ENABLE(buffer_size => null); -- null 表示不再限制

ORA-28002: the password will expire within 7 days

1、问题复现:有时候当登陆 oracle 的数据时候,提示 "ORA-28002: the password will expire within 7 days" 密码将在 7 天内过期。

2、产生原因:这是因为 Oracle 数据库默认对账户的密码有过期时间限制,比如 180 天,当快达到期限时就会有此提示。

3、解决方式一:修改账户密码,先使用具有管理员权限的账户登陆,然后对即将过期的密码账户进行修改:

alter user 用户名 identified by "新密码"; --修改用户密码

4、解决方式二:将密码设为永不过期,对于生产上的 web 程序使用的数据库账户密码,通常并不希望它变动,此时直接将密码设置成永不过期即可。

 -- 1、通过 dba_users 视图,查询用户名(username)、用户资源配置文件名(profile)
 -- 用户名 对应的 profile 通常都为 DEFAULT,包括 管理员用户也是
select username,profile from dba_users; 

-- 2、通过 dba_profiles 视图,查询 profile='DEFAULT' 且资源名为 "PASSWORD_LIFE_TIME" 的资源配置信息
-- PASSWORD_LIFE_TIME 表示密码有效期,结果中的 limit 表示此配置文件对此资源的限制,比如多少天.
select s.profile,s.resource_name,s.resource_type,s.limit from dba_profiles s where s.profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME'; 

-- 3、更改配置文件默认限制密码生命时间不受限制,即密码永不过期
alter profile default limit password_life_time unlimited;

修改后设置立即生效,不需要重启数据库,此时密码永远不会过期。

ORA-28040: No matching authencation  protocol

1、问题复现:Spring boot 应用启动时候正常,但是页面访问后台接口,程序再访问数据库时,控制台报错如下:没有匹配的身份验证协议

Caused by: java. sql. SQLExceptiona ORA-28040: No matching authentication  protocol
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java 112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java: 331)
....

2、产生原因:Oracle 12c 的 SQLNET.ALLOWED_LOGON_VERSION 参数默认等于11,如果客户端版本过低,连接数据库时就会出现这个错误。其他版本可能也有类似问题。

解决方式1:当时环境是:Java jdk 1.8 + Spring boot ,在开发环境时是 Oracle 11g,此时运行正常,后面到测试环境换成  Oracle 12C,就发生上面的错误,经过检查发现原来是 .jar 文件里面打了两个不同版本的 Oracle 驱动。直接用压缩工具打开 .jar 文件,然后手动删除多余的 ojdbc14-x.x.x.jar 文件,只留下  ojdbc8 版本的驱动即可。

解决办法2:可以修改 Oracle 安装目录下的一个 E:\app\wmx\product\12.1.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora 文件,在末尾添加一行:SQLNET.ALLOWED_LOGON_VERSION=8,降低它允许登陆的版本。

解决办法3:自己升级一下Orace客户端版本,比如升到 ojdbc8-12.2.0.1.jar。Oracle jdbc 驱动版本兼容

ORA-28231: 没有数据传递到 obfuscation 工具箱

1、报错复现原因如下:

-- 被提取md5摘要的内容'不能为null或者为空'',否则报错:ORA-28231: 没有数据传递到 obfuscation 工具箱。
 select Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => '')) as md5 from dual;
 select Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => null)) as md5 from dual;
 --如果comm为空或者为null,则报错
 select t.*,  Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => t.comm)) md5   from emp t;

2、解决办法:为空的时候不要再求md5值

select t.*,
	decode(nvl(t.comm, 0), --表达式
		   0, --值1
		   --将数字类型转为字符串类型,否则报错:ORA-00932:数据类型不一致:应为CHAR,但却获得 BINARY
		   cast(t.comm as varchar2(38)), --结果1
		   Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => cast(t.comm as
																					 varchar2(38)))) -- 默认值
		   ) a
from emp t;

select t.*,
	(case
	  when nvl(t.job, '0') = '0' then
	   t.job
	  else
	  --将结果类型转为字符串,否则报错:ORA-00932:数据类型不一致:应为CHAR,但却获得 BINARY
	   cast(Utl_Raw.Cast_To_Raw(sys.dbms_obfuscation_toolkit.md5(input_string => cast(t.job as
																					  varchar2(38)))) as
			varchar2(38))
	end) a
from emp t;

ORA-30186: ''\'' 的后面必须为四个十六进制的字符或另一个 ''\''

--unistr 将 Unicode 字符串解码时,\ 的后面必须为四个十六进制的字符或另一个 ''\'',否则报错。
--Hi,我是 123。jackson.
select unistr('Hi\ff0c\6211\662f 123\3002jackson.') from dual;

示例:unistr 将 Unicode 字符串解码

ORA-30556: 在要修改的列上已定义函数索引或位图联接索引

1、调整表字段长度时报错:ORA-30556:functional index is defined on the column to be modified
2、原因是被修改的列被一个函数索引使用,比如 索引里面使用了 DECODE 函数。

3、解决办法:找出这个索引,先drop、再修改字段、最后重建索引。(建议在系统闲时操作drop index)。示例如下:

--删除索引
drop index UNIDX_BAS_PERSON_ASSIST_INFO;
--调整目标字段长度
alter table BAS_PERSON_ASSIST_INFO modify IDEN_NO VARCHAR2(64);
--重建索引
create unique index UNIDX_BAS_PERSON_ASSIST_INFO on BAS_PERSON_ASSIST_INFO (MOF_DIV_CODE, AGENCY_CODE, IDEN_NO, DECODE(TO_CHAR(IS_DELETED),'2','2',ID));

ORA-30553: The function is not deterministic

1、https://wangmaoxiong.blog.csdn.net/article/details/90702872#基于函数的索引

ORA-30926:无法在源表中获得一组稳定的行

-- 用 bas_person_info_tmp0715U 表中的人员信息更新 bas_person_info 表中 2022年日常动态维护版本的数据
-- 区划、单位、人员类型、证件号相等的数据认为是同一个人
-- 如果 bas_person_info_tmp0715U 表中同一单位出现重复的人员(垃圾数据),则会报错:ORA-30926:无法在源表中获得一组稳定的行
MERGE INTO bas_person_info A
USING bas_person_info_tmp0715U B
ON (a.mof_div_code = b.mof_div_code and a.agency_code = b.agency_code and a.ui_code = b.ui_code and a.iden_no = b.iden_no and A.version = '2022rcdtwh' and A.is_deleted = 2)
WHEN MATCHED THEN
  UPDATE
     SET a.sex_id    = b.sex_id,
         a.sex_code  = b.sex_code,
         a.sex_name  = b.sex_name,
         a.nation_id = b.nation_id,
         a.nat_id    = b.nat_id,
         a.nat_code  = b.nat_code,
         a.nat_name  = b.nat_name;

ORA-32001: 已请求写入 SPFILE, 但是没有正在使用的 SPFILE

1、当设置 Oracle 最大连接数的时候,如果出现如下错误,则可以参考本示例进行解决。

ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE
       ORA-32001: 已请求写入 SPFILE, 但是没有正在使用的 SPFILE

2、Oracle 有两钟启动方式:pfile 与 spfile,正常默认情况下是 spfile,而我有一次是 Oracle 数据库出了些问题,开机之后 Oracle 无法自动启动,手动启动也报错,无奈之下,只能使用 pfile 方式启动。

而修改 Oracle 最大连接数 Oracle 必须是 spfile 方式启动。

3、执行 Sql 命令:show parameter spfile,查询 Oracle 是以 spfile 还是 pfile 启动,如果 value 对应有值,则表示是 spfile 启动,否则就是 pfile 启动。

SQL> show parameter spfile
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      

4、如果是 pfile 启动的,则可以使用 sqlPlus 登陆进去,然后使用如下 sql 语句从 pfile 复制属性配置文件到 spfile:

SQL> create spfile from pfile;       -- 复制 pfile 属性配置文件并为 spfile 新建, 如果失败,则可以手动指定  pfile 的启动文件,如:create spfile from pfile='C:\app\Think\admin\orcl\pfile\init.ora.1123201992052';

文件已创建。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

5、最后可以再次使用 show parameter spfile 命令查询启动方式。

6、扩展信息:

pfile 方式启动对应的属性文件路径形如:C:\app\Think\admin\orcl\pfile\init.ora.1123201992052'                                      //路径与名称以实际安装路径为准

spfile 方式启动对应的属性文件路径形如:C:\app\Think\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA           //路径以实际安装路径为准

属性文件中是一些 Oracle 的属性配置信息,比如 Oracle 最大允许连接数的配置信息就在 SPFILEORCL.ORA 中。

完整操作演示:https://gitee.com/wangmx1993/my-document/blob/master/sql/Oracle 修改最大连接数.sql

ORA-32594: COMMENT 命今的对象类别无效

-- Oracle 低版本,比如 9i 
COMMENT ON VIEW 视图名称 IS '视图注释';
 
--Oracle 高版本,比如 11g
COMMENT ON MATERIALIZED VIEW 视图名称 IS '视图注释';
 
-- 比如在高版本中使用不加 MATERIALIZED 的语句就会报错:ORA-32594: COMMENT 命今的对象类别无效

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 此CVE-2022-27778漏洞影响的是Oracle、MySQL和Curl三个组件。该漏洞存在验证错误问题,可能导致攻击者在没有身份验证的情况下,对数据库进行未授权访问或在Curl上执行恶意代码。需要及时更新相关组件以修复该漏洞。 ### 回答2: Oracle MySQL Curl组件输入验证错误漏洞(CVE-2022-27778)是一个严重的漏洞,它可能导致攻击者利用网络渗透到系统中,获取敏感信息或执行恶意代码,从而导致系统被攻击者完全控制。 该漏洞的根本原因是由于MySQL中的Curl组件在处理输入时没有正确验证用户提供的数据,从而使攻击者有机会向系统中注入恶意代码。由于这个组件在很多地方都被使用,攻击者可以通过许多方式来利用这个漏洞,例如通过Web应用程序、邮件客户端或其他方式。 为了防止这种漏洞的利用,系统管理员可以采取以下几个措施: 1. 及时更新相关的补丁程序,以便修复该漏洞。Oracle发布了一份安全公告,提供了一些在修复该漏洞时需要执行的操作。系统管理员可以按照这些指南来安装相关的安全补丁程序,并遵循最佳的实践,例如备份系统数据、测试补丁程序等。 2. 对所有输入的数据进行严格的验证,以便保证用户提供的数据是正确的和合法的。这包括用户的用户名、密码、电子邮件地址等敏感数据。系统管理员可以使用一些常见的验证库,例如OWASP ESAPI,来帮助他们执行这些操作。 3. 升级所有相关的依赖库和软件,以确保它们都最新的版本,并且不包含已知的安全漏洞。这些软件包括MySQL、Curl和其他常见的工具和库。 总之,Oracle MySQL Curl组件输入验证错误漏洞(CVE-2022-27778)是一个非常严重的漏洞,需要系统管理员采取及时有效的措施进行修复和防范。只有这样,才能保证您的系统安全,并避免遭受攻击者的攻击和入侵。 ### 回答3: CVE-2022-27778是Oracle MySQL Curl组件中的输入验证错误漏洞,该漏洞可能允许攻击者利用缺陷导致拒绝服务或执行任意代码。 该漏洞影响Oracle MySQL 8.0.27以前版本中的Curl组件。具体而言,该漏洞是由于MySQL Curl组件未正确验证输入而引起的。攻击者可以通过发送特定构造的请求来利用该漏洞。 如果攻击成功,则攻击者可以利用该漏洞来执行任意代码或拒绝服务攻击。攻击者可以利用该漏洞使服务器崩溃或进入不稳定状态,从而影响用户访问和使用。 针对该漏洞,建议用户立即安装官方推荐的补丁程序或更新至最新版本。同时,建议用户限制网络访问以及采取其他安全措施,如访问控制和安全审计等,以最大程度地提高系统安全性。此外,建议用户保持和升级安全软件和操作系统,以最大程度地减少安全漏洞对服务器造成的影响。 总之,CVE-2022-27778是一个严重的安全漏洞,可能导致服务器崩溃或被入侵。因此,用户应该尽快采取必要的措施来防范和解决此问题,以确保系统的安全性和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蚩尤后裔-汪茂雄

芝兰生于深林,不以无人而不芳。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值