精华内容
下载资源
问答
  • 本文实例分析了mysql存储emoji表情报错处理方法。分享给大家供大家参考,具体如下:utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。...

    本文实例分析了mysql存储emoji表情报错的处理方法。分享给大家供大家参考,具体如下:

    utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而移动端的表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常:

    java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)

    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)

    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)

    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620)

    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662)

    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)

    可以对4字节的字符进行编码存储,然后取出来的时候,再进行解码。但是这样做会使得任何使用该字符的地方都要进行编码与解码。

    utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。

    采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。

    更改数据库的编码为utf8mb4:

    1. MySQL的版本

    utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。

    2. MySQL驱动

    5.1.34可用,最低不能低于5.1.13

    3.修改MySQL配置文件

    修改mysql配置文件my.cnf(windows为my.ini)

    my.cnf一般在etc/mysql/my.cnf位置。找到后请在以下三部分里添加如下内容:

    [client]

    default-character-set = utf8mb4

    [mysql]

    default-character-set = utf8mb4

    [mysqld]

    character-set-client-handshake = FALSE

    character-set-server = utf8mb4

    collation-server = utf8mb4_unicode_ci

    init_connect='SET NAMES utf8mb4'

    4. 重启数据库,检查变量

    SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

    Variable_name

    Value

    character_set_client

    utf8mb4

    character_set_connection

    utf8mb4

    character_set_database

    utf8mb4

    character_set_filesystem

    binary

    character_set_results

    utf8mb4

    character_set_server

    utf8mb4

    character_set_system

    utf8

    collation_connection

    utf8mb4_unicode_ci

    collation_database

    utf8mb4_unicode_ci

    collation_server

    utf8mb4_unicode_ci

    collation_connection 、collation_database 、collation_server是什么没关系。

    但必须保证

    系统变量

    描述

    character_set_client

    (客户端来源数据使用的字符集)

    character_set_connection

    (连接层字符集)

    character_set_database

    (当前选中数据库的默认字符集)

    character_set_results

    (查询结果字符集)

    character_set_server

    (默认的内部操作字符集)

    这几个变量必须是utf8mb4。

    5. 数据库连接的配置

    数据库连接参数中:

    characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。

    而autoReconnect=true是必须加上的。

    6. 将数据库和已经建好的表也转换成utf8mb4

    更改数据库编码:

    ALTER DATABASE caitu99 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

    更改表编码:

    ALTER TABLE TABLE_NAME CONVERT TO CHARACTER SET utf8mb4 COLLATEutf8mb4_general_ci;

    如有必要,还可以更改列的编码

    7、在第3步设置character_set_database,character_set_server不成功的可以试下直接在mysql.exe下

    set @@character_set_server='utf8mb4';

    set @@character_set_database='utf8mb4';

    这下数据库就可以存下emoji表情的编码了。

    附上我的my.ini

    # For advice on how to change settings please see

    # http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

    # *** DO NOT EDIT THIS FILE. It's a template which will be copied to the

    # *** default location during install, and will be replaced if you

    # *** upgrade to a newer version of MySQL.

    [client]

    default-character-set = utf8mb4

    [mysql]

    default-character-set = utf8mb4

    [mysqld]

    character-set-client-handshake = FALSE

    character-set-server = utf8mb4

    collation-server = utf8mb4_unicode_ci

    init_connect='SET NAMES utf8mb4'

    # Remove leading # and set to the amount of RAM for the most important data

    # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

    # innodb_buffer_pool_size = 128M

    # Remove leading # to turn on a very important data integrity option: logging

    # changes to the binary log between backups.

    # log_bin

    # These are commonly set, remove the # and set as required.

    # basedir = .....

    # datadir = .....

    # port = .....

    # server_id = .....

    # Remove leading # to set options mainly useful for reporting servers.

    # The server defaults are faster for transactions and fast SELECTs.

    # Adjust sizes as needed, experiment to find the optimal values.

    # join_buffer_size = 128M

    # sort_buffer_size = 2M

    # read_rnd_buffer_size = 2M

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    希望本文所述对大家MySQL数据库计有所帮助。

    展开全文
  • 请教各位老师一个问题,如果想把一个表的建立并插入数据放到一个存储过程中,应该要怎么处理呢,如果插入数据的表在存过中插入数据之前未建立,存储过程报错提示表不存在,导致存储过程失效,有没有什么变通的办法...
          请教各位老师一个问题,如果想把一个表的建立并插入数据放到一个存储过程中,应该要怎么处理呢,如果插入数据的表在存过中插入数据之前未建立,存储过程会报错提示表不存在,导致存储过程失效,有没有什么变通的办法呢?
     
          之所以不在存储过程之外建表是想定时执行这个存储过程,如果存在表被DROP的情况,就会导致存储过程插入数据报错了,所以想在存储过程中自动把表的建立和处理一起考虑了,插入数据不考虑使用动态SQL来插入,因为这样的话就不能使用plsql的东西了(比如远程链接优化的提示),请教怎么处理,谢谢啦!
     
    简单来说,就是要怎么实现在一个过程或包中,建表并插入,而插入不能是动态sql,
     
    比如这样的情况,如果表不存在存储过程应付报错失效
    1. CREATE OR REPLACE PROCEDURE y_p_test AS
    2. BEGIN
    3. drop_table('y_test');
    4. EXECUTE IMMEDIATE ' create table y_test (id number, name varchar2(20)) ';
    5. FOR i IN (SELECT/*+driving_site(b) */ * FROM small_tab_local a, big_tab_remote@remote b
    6. WHERE a.sub_id=b.sub_id AND a.acc_id=b.acc_id)
    7. LOOP
    8. INSERT INTO y_test VALUES i;
    9. END LOOP;
    10. COMMIT;
    11. END;
    已想到一个解决办法了,经测试有效,思路就是用一个存过来DROP表后创建,再用一个存过来插入数据,然后再用一个存过通过动态SQL的方式先后调用这2个存过,由于动态SQL是执行时才进行判断,所以能顺利执行,供大家参考
    1. create or replace procedure drop_table(x varchar2) as
    2. table1 number;
    3. begin
    4. select COUNT(*) INTO table1 from user_tables where table_name=upper(x);
    5. if table1 > 0
    6. then execute immediate 'drop table '||x;
    7. end if;
    8. end;
    9. /
    10. CREATE OR REPLACE PROCEDURE y_p_test0
    11. AS
    12. BEGIN
    13. drop_table('y_test');
    14. EXECUTE IMMEDIATE 'create table y_test as select * from fzt_dd where 1=2';
    15. END;
    16. /
    17. CREATE OR REPLACE PROCEDURE y_p_test AS
    18. BEGIN
    19. FOR i IN (SELECT * FROM fzt_dd WHERE ROWNUM<10)
    20. LOOP
    21. INSERT INTO y_test VALUES i;
    22. END LOOP;
    23. COMMIT;
    24. END;
    25. /
    26. CREATE OR REPLACE PROCEDURE y_p_test1 AS
    27. BEGIN
    28. EXECUTE IMMEDIATE 'begin y_p_test0; end;';
    29. EXECUTE IMMEDIATE 'begin y_p_test; end;';
    30. END;
    31. /




    转载于:https://www.cnblogs.com/highroom/p/e7a99102c034cfdb4bdded46543aaaed.html

    展开全文
  • 我在写oracle存储过程。oracle 9i的。 结构像这样。 for i in 1..3 loop begin insert .... 1 for j in 1..3 loop insert ... 2 insert ... 3 end loop; end exception when others then ......
  • ``` SELECT a.union_code, (select count(1) from UNION_MEMBER um where um.delete_flag = '0' and um.member_union_code in ... (select ubi.union_code ...现在想用存储过程处理 但是不懂怎么写 求大佬指导
  • 至于pdf预览功能,使用第三方应用打开即可,在《作为一个java后端程序员,我是怎么接手android项目,并完成移动端的pdf处理需求的?》中我列出了处理过程中遇到的问题。 项目不大,主要功能就是这些,因为是传统企业...

    背景介绍

    之前接手了一个android项目。主要是对pdf资料进行管理。整个业务流程如下:无网络环境下,解压本地的zip压缩包,将打包的pdf进行解密,然后存储。

    支持有网络的情况下,从服务端更新pdf文件,自然此处涉及一些逻辑处理,比如检查更新,pdf版本管理等。

    至于pdf预览功能,使用第三方应用打开即可,在《作为一个java后端程序员,我是怎么接手android项目,并完成移动端的pdf处理需求的?》中我列出了处理过程中遇到的问题。

    项目不大,主要功能就是这些,因为是传统企业,所以技术不太新,但业务逻辑特别复杂,且主要在web端。

    此项目接手时,几乎已经开发完成,所以我只做了bug修复和一些操作流程上的优化,尽管对于部分处理方案并不满意,可已无能为力。没有多余的时间去修改。

    由于android只是曾经在学校时接触过,所以这次修改bug和优化的工作并不是特别顺利,现在将处理过程中遇到的问题记录下来,方便以后查阅。
    在这里插入图片描述

    有一些问题在解决过程中,辗转多篇博客和技术资料才得以处理成功,也希望对遇到同样问题的朋友有所帮助。

    问题1: 项目解密pdf时报错。

    • 问题2: 第三方pdf阅读器,不能对pdf添加注释,提示受保护的文件(处理方法,点此可查看)。
    • 问题3: 中英文切换功能,引发的纠结,怎么在app内部切换系统语言。
    • 问题4:
      混合开发,遇到的问题。点击页面,检查更新,js调用android,通过OkHttp访问后台,回调成功,不能在此时调用js中的方法,弹出有更新的弹框?
    • 问题5: 混合开发,样式不统一,重写toast展示的样式。

    项目解密pdf时报错

    主要错误信息:

    Rejecting re-init on previously-failed class java.lang.Class<com.itextpdf.awt.PdfGraphics2D>: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/Graphics2D;
            at void com.itextpdf.text.pdf.PdfWriter.<init>(com.itextpdf.text.pdf.PdfDocument, java.io.OutputStream) (PdfWriter.java:608)
            at void com.itextpdf.text.pdf.PdfStamperImp.<init>(com.itextpdf.text.pdf.PdfReader, java.io.OutputStream, char, boolean) (PdfStamperImp.java:165)
            at void com.itextpdf.text.pdf.PdfStamper.<init>(com.itextpdf.text.pdf.PdfReader, java.io.OutputStream) (PdfStamper.java:98)
        Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.Graphics2D" on path: DexPathList[[zip file "/data/app/com.china-LB72OENoAUoDoiSc85yNSA==/base.apk"],nativeLibraryDirectories=[/data/app/com.china-LB72OENoAUoDoiSc85yNSA==/lib/arm64, /system/lib64, /product/lib64]]
            at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
            at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
            at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
            at void com.itextpdf.text.pdf.PdfWriter.<init>(com.itextpdf.text.pdf.PdfDocument, java.io.OutputStream) (PdfWriter.java:608)
            at void com.itextpdf.text.pdf.PdfStamperImp.<init>(com.itextpdf.text.pdf.PdfReader, java.io.OutputStream, char, boolean) (PdfStamperImp.java:165)
            at void com.itextpdf.text.pdf.PdfStamper.<init>(com.itextpdf.text.pdf.PdfReader, java.io.OutputStream) (PdfStamper.java:98)
            at void com.china.service.impl.BaseServiceImpl.updateTechInfo(java.io.File, android.content.Context) (BaseServiceImpl.java:434)
            at void com.china.CmisActivity$Vue.updateAndroidTechInfo() (CmisActivity.java:193)
            at void android.os.MessageQueue.nativePollOnce(long, int) (MessageQueue.java:-2)
            at android.os.Message android.os.MessageQueue.next() (MessageQueue.java:386)
            at void android.os.Looper.loop() (Looper.java:175)
            at void android.os.HandlerThread.run() (HandlerThread.java:65)
    

    初步判断,是使用的处理pdf的工具包有问题,因为之前负责的同事已离职,只能自己折腾,不过笔者猜测,这个问题应该一直存在,但几乎不影响使用,所以之前的开发人员也就没有处理。

    按道理来讲,我也没有多余的时间来处理,而且几乎可以预见,此类问题处理起来也要耗费不少时间,毕竟android开发,只是我的栈外技术,并不擅长。

    一开始,我是不打算处理这个问题的,但是后来发现,app初始化时解密pdf偶尔会失败,于是不得不处理。
    在这里插入图片描述

    不是我懒,真的是没时间来处理【汗颜】。

    因为解密代码就那么两行,所以,如果不是引用的com.itextpdf.text.pdf这个工具包本身有问题,那就是我们用的有问题。

    最后结果及解决方案。
    itextpdf的jar分为android版本和java版本,因为android里面使用的java是不完整的。具体其中的区别,笔者并不是十分清楚。
    所以是项目中用的itextjar版本不对,替换成android版之后,一切正常。

    具体操作,删除原来的包引用,在gradle中添加:
    在这里插入图片描述

    至此问题解决。
    最终解决问题的博客:
    https://blog.csdn.net/nijian81/article/details/52948640

    说来项目也是临时接手,对android不熟悉,所以排查问题和寻找解决方案,还是花了两三个小时。包括去itextpdf的官网下载jar包时,没弄明白他们github是怎么管理的,明明显示是安卓版,却又提示已停止维护,也是懵逼。

    还好最后问题解决,不至于在代码里留下定时炸弹。松口气。

    展开全文
  • 概述记录一下最近碰到的一个问题,系统维护人员发现接口平台异常,报错如下:信息:执行存储过程xxxx出错!开始执行存储过程xxxx-12008-----ORA-12008: 实体化视图的刷新路径中存在错误ORA-01502: 索引 'xxxx' 或这...

    概述

    记录一下最近碰到的一个问题,系统维护人员发现接口平台异常,报错如下:

    信息:执行存储过程xxxx出错!开始执行存储过程xxxx-12008-----ORA-12008: 实体化视图的刷新路径中存在错误

    ORA-01502: 索引 'xxxx' 或这类索引的分区处于不可用状态

    下面介绍下解决的过程:


    这里报错还是挺明显的,索引不可用?

    1、查看索引状态

    select status from user_indexes where index_name='PK_ORDER_RELEASE_LINE';
    bdb81d8fede93e44e5f32a011be9c579.png

    这里可以看到还真的是unusable,可能是有人move过表,或者disable 过索引。

    2、重建索引

    alter index PK_ORDER_RELEASE_LINE rebuild;

    这里重建索引看下,重建索引有时是会碰到资源繁忙的情况的,这时候大家可以等一下再操作,或者也可以排查下死锁,然后kill 相关会话,不过比较建议等一下操作吧~

    0343faee6d00488c581857d507016624.png

    3、查看索引状态

    eabe0e379ddd18cdc94f6db5587eaa94.png

    在索引可用后让相关人员重新调试接口,反馈不会再报这方面的错误,问题解决。


    新接触的这个系统还是挺多问题的,特别是存储过程方面,计划后面做一下优化,再分享相关内容,感兴趣的朋友可以关注一下~

    de34c60e1a2acf1c82f799fbde46df4c.gif
    展开全文
  • 概述记录一下最近碰到的一个问题,系统维护人员发现接口平台异常,报错如下:信息:执行存储过程xxxx出错!开始执行存储过程xxxx-12008-----ORA-12008: 实体化视图的刷新路径中存在错误ORA-01502: 索引 'xxxx' 或这...
  • 当我以为一切都搞定了的时候,问题又来了,因为我需要用到将Hive中的数据以parquet格式进行存储,到了这时它又报错了,报错信息如下: Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException ...
  • DB2数据库的存储过程里有这样一句: [code="java"]begin declare sel_cur cursor with return to caller for select * from tmp_zzybtz_day_lsb order by day,daymc ; open sel_cur; end; [/code] 我...
  • // TODO: 在此添加命令处理程序代码 CFileDialog Dlg(TRUE, NULL, NULL, OFN_OVERWRITEPROMPT, NULL, NULL);//第一步读取模板图像A,为了简便表示算法, //该程序只以灰度图像打开,彩色三个通道...
  • 在触发器调用存储过程,在存储过程里也不能用,是触发器对DCL的限制啊?求教!!!**** 数据库知识相当有限,求助各位,需要加什么文件吗或什么额外的配置吗? 已经执行的命令: 1.db2 update dbm cfg using ...
  • 将数据分散到不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据,处理更大的负载。 这里不讲怎么操作分片有兴趣自己百度   那么分片之后的集合是不支持group操作的 会报错,为解决这个问题 使用map...
  • asp.net知识库

    2015-06-18 08:45:45
    2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本极大提高) 分页存储过程:排序反转分页法 优化后的通用分页存储过程 sql语句 一些Select检索高级用法 SQL server 2005中新增的排序函数及应用 ...
  • 强调一点,这里的相对路径也是相对于访问页面的URL的路径,本质上与页面文件在项目中的存储位置没直接关系,所以这里用相对路径时也存在由于访问URL不确定带来的问题(是不是这样呢?如文章开头说的,这里都是我自己...
  • 存储过程ORA-4068之错误解析 54 一次网络连接错误的诊断 57 浅谈JOB和DATABASE LINK的一个特点 58 一次ORA-01041错误诊断 60 一个ORA-604错误的分析 61 ORA-7445(kdodpm)错误 62 函数索引产生隐藏列 65 用...
  • 在网狐荣耀版进行机器人操作或其它操作时,经常会出现"定时器异常:TimerID=2“错误,这个错误怎么处理呢? 这里提示其实已经很明白了,就是定时器错误。 一和运行库有关系,二和操作有关。 八、网狐荣耀版棋牌...
  •  1.3.3如何传输文件至控制器存储区  1.3.4如何在SoMachine V3.1中更新Lexium 23 Plus库文件至V1.1.5.0  1.3.5Lexium 23 Plus库文件在安装后找不到Lexium 23的解决方法  1.3.6RETAIN与PERSISTENT断电数据类型  ...
  • 因为还不怎么用,所以以后再说吧。。。 Scipy Doc 杂文汇集 Python读取文件以及读取大文件 gensim之Word2vec使用 心得:多动手,别只看 机器学习及深度学习篇 机器学习网站及教程 机器学习入门教程与...
  • 本书以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预处理器等各个方面的主题,并分别...
  • 当我们将emun参数传递给函数时,如果传递了一个不属于这个集合的参数,编译器报错。 区别: 枚举是类型,而宏没有类型。 枚举将检查其语法,而宏是简单的文本替换。 7、 const的用法,以及声明const变量与宏的区别?...
  • 1.10 同一个静态(static)函数或变量的所有声明都必需包含static存储类型吗? 1.11 extern在函数声明中是什么意思? 1.12 关键字auto到底有什么用途? 类型定义(typedef) 1.13 对于用户定义类型,typedef和#...
  • 下面我就给大家“安利”几个我在写的过程中的“坑”。 因为花的时间不多,功能有很多没有完善,页面写的不是很好看,请各位将就着看啦。╮(╯▽╰)╭ 准备工作 1. 开发环境:WXML(HTML),WXSS(CSS),Javascript 2. ...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分配、库函数、C预...
  • 在Js中数组可以存储任意的数据,而且它的大小是可以动态调整的类似于OC中的NSMutableArray。创建数组可以使用构造函数的方式也可以使用字面量的形式,另外可以使用concat从一个数组中复制一个副本出来。...
  • 我在使用p2的时候报错了。 3 1.6 我想声明一个指针,并为它分配一些空间,但却不行。这样的代码有什么问题?char *p; *p=malloc(10); 4 声明风格 4 1.7 怎样声明和定义全局变量和函数最好? 4 1.8 如何在C...
  • 后端负责数据的处理存储等。前后端的关系可以浅显地概括为:后端提供数据,前端负责显示数据。 在这种前后端的分工下,会经常有一些疑惑:既然前端数据是由后端提供,那么后端数据...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    6. 说出ArrayList,Vector, LinkedList的存储性能和特性。 8 7. Collection 和 Collections的区别。 8 8. &和&&的区别 8 9. HashMap和Hashtable的区别。 8 10. final, finally, finalize的区别。 9 11. Overload和...
  • c++ 面试题 总结

    2009-09-16 08:44:40
    如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了= -------------------------------------------------------------------------- 7.下面的代码有什么问题? void DoSomeThing(...) { char* ...
  • springmybatis

    2015-09-05 06:54:28
    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

存储过程报错怎么处理