`
liu_hliang
  • 浏览: 199573 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

MySql触发器中文乱码问题解决

阅读更多
<!--WizHtmlContentBegin-->
    在开发XXXX项目过程中,需要用到触发器,该触发器会将部分数据复制到其它表中,但是复制后的数据,中文部分乱码,影响了正常的功能,所有表的默认字符集都是utf8,表中中文字段的字符集也已经显示指定为utf8,但是还是乱码!
    解决方案就是指定中文变量所用的字符集为utf8,触发器代码如下:
DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `antsoldier`.`event_ai`$$
create trigger `antsoldier`.`event_ai` AFTER INSERT on `antsoldier`.`event` 
for each row BEGIN
    declare threatName varchar(100) character set utf8;
    declare threatType varchar(100) character set utf8;
    declare threatProtocol varchar(24) character set utf8;
    declare threatPid int;
    declare threatCid int;
    declare existNameCount int;
    declare existTypeCount int;
    declare existHostCount int;
    declare existProtocolCount int;
    /*获取威胁的pid和cid*/
    select pid,cid into threatPid,threatCid from host where ip=inet_ntoa(new.dst_ip);
    if threatPid > 0 and threatCid > 0 then
        /*获取威胁的名称和类型*/
        select t2.name,t3.name into threatName,threatType from plugin_sid t1,classic_eventbase t2,classic_type t3 where t1.plugin_id=new.plugin_id and t1.sid=new.plugin_sid and t1.class_id=t2.class_id and t1.class_sid=t2.sid and t3.class_id=t1.class_id;    
        select name into threatProtocol from protocol where id=new.protocol;
        /*获取该名称的威胁存在的次数*/
        select count(*) into existNameCount from threat_statistic_name where name=threatName and pid=threatPid and cid=threatCid limit 0,1;
        /*获取该类型的威胁存在的次数*/
        select count(*) into existTypeCount from threat_statistic_type where type=threatType and pid=threatPid and cid=threatCid limit 0,1;    
        /*获取威胁的主机ip信息*/
        select count(*) into existHostCount from threat_statistic_host where hostip=new.dst_ip and pid=threatPid and cid=threatCid limit 0,1;
        /*获取威胁的协议存在的次数*/
        select count(*) into existProtocolCount from threat_statistic_protocol t1,protocol t2 where t2.id=new.protocol and t1.name=t2.name and pid=threatPid and cid=threatCid limit 0,1;
        /*处理高危主机*/
        if existHostCount>0 then
            update threat_statistic_host set counts=counts+1 where hostip=new.dst_ip and pid=threatPid and cid=threatCid;
        else
            insert into threat_statistic_host(hostip,counts,pid,cid) values(new.dst_ip,1,threatPid,threatCid);
        end if;
        /*处理威胁名称*/
        if existNameCount>0 then
            update threat_statistic_name set counts=counts+1 where pid=threatPid and cid=threatCid and name=threatName;
        else
            insert into threat_statistic_name(name,counts,pid,cid) values(threatName,1,threatPid,threatCid);
        end if;
        /*处理威胁类型*/
        if existTypeCount>0 then
            update threat_statistic_type set counts=counts+1 where pid=threatPid and cid=threatCid and type=threatType;
        else
            insert into threat_statistic_type(type,counts,pid,cid) values(threatType,1,threatPid,threatCid);
        end if;

        /*处理威胁协议*/
        if existProtocolCount>0 then
            update threat_statistic_protocol set counts=counts+1 where name=threatProtocol and pid=threatPid and cid=threatCid;
        else
            insert into threat_statistic_protocol(name,counts,pid,cid) values(threatProtocol,1,threatPid,threatCid);
        end if;
    end if;
END;
$$
DELIMITER ;
 
0
2
分享到:
评论

相关推荐

    解决MySQL客户端输出窗口显示中文乱码问题的办法

    在使用MySQL数据库时,有时会遇到一个常见的问题,即在MySQL客户端(如MySQL命令行或第三方工具)...通过以上步骤,你应该能够成功地解决MySQL客户端输出窗口显示中文乱码的问题,从而顺畅地进行数据库操作和数据查询。

    mysql数据库备份工具 绝对不会出现乱码

    总之,这款MySQL数据库备份工具凭借其乱码问题的解决、数据加密以及全面的数据对象支持,提供了高效且安全的备份解决方案。配合友好的WinForm界面,使得非技术背景的用户也能轻松上手,为数据库管理带来了便利。在...

    MySQL中文参考手则

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,它以其高效、稳定和易用性而...通过这份手册,读者不仅可以学习到如何有效地使用MySQL,还能解决常见的中文乱码问题,从而更好地利用MySQL来管理和处理数据。

    新版 MySQL DBA 高级视频 基于MySQL 5.7 MySQL 8.0版本.rar

    │ 4_MySQL触发器课堂强化练习.mp4 │ 5_MySQL数字和时间类型.mp4 │ 6_MySQL字符串类型.mp4 │ 7_MySQL存储引擎.mp4 │ 8_MySQL第三范式设计讲解.mp4 │ 9_MySQL数据库设计工具.mp4 │ ├─新版MySQL DBA综合实战...

    navicat8lite_mysql_cs

    Navicat8Lite_mysql_cs,正如其名,是一款专为MySQL数据库设计的轻量级管理软件,它以其出色的功能和友好的用户界面,为数据库管理员提供了极大的便利,有效解决了数据导入导出可能出现的乱码问题。 首先,Navicat8...

    mysql中文详细笔记.zip

    了解MySQL的架构对于优化性能和解决问题至关重要。 "sql语句.bmp"很可能是对SQL基本和高级命令的总结,如SELECT用于查询,INSERT用于插入,UPDATE用于修改,DELETE用于删除数据,以及CREATE用于创建数据库对象如表...

    从mysql数据库迁移至sqlserver数据库

    在迁移过程中,描述中提到的`text`类型在MySQL中存储大量文本数据,但在迁移到SQL Server时,如果没有预处理,可能会遇到中文乱码的问题。这是因为`text`在MySQL中默认编码可能与SQL Server的`ntext`类型不同。因此...

    Oracle数据库sql转换mysql数据库工具

    "Oracle数据库sql转换mysql数据库工具" 提供了解决这一问题的解决方案,允许用户将Oracle数据库中的SQL语句或数据结构转换为MySQL兼容的格式。 在数据库迁移过程中,这样的工具至关重要,因为它可以简化工作流程,...

    mysql数据库互相转换及同步工具-MySQL_MySQL字符集互转

    在不同系统之间迁移数据库时,字符集的不匹配可能会导致乱码问题,因此字符集的转换至关重要。 1. **字符集的概念**:字符集是数据库用来表示文本字符的编码方式,例如ASCII、ISO-8859-1、UTF-8等。不同的字符集...

    Mysql数据库转oracle工具

    综上所述,"Mysql数据库转oracle工具"是解决数据库迁移问题的有效途径,它降低了技术难度,提高了迁移效率。用户在使用时,应充分理解数据类型映射、字符集兼容等问题,以确保迁移的成功和后续系统的稳定运行。

    SQL文档大全(含MySql相关文档)

    通过学习这些文档,用户可以系统地掌握SQL语言,了解MySQL的导入导出操作,以及解决常见的乱码问题,从而提升数据库管理和开发能力。同时,对于初学者来说,这是一个很好的起点,对于经验丰富的开发者来说,也是很好...

    Mysql转换为Access数据库软件

    - **触发器和存储过程**:Access不支持MySQL的触发器和存储过程,这部分功能在转换过程中可能无法保留。 - **索引和主键**:转换工具可能无法自动创建Access中的索引和主键,需要手动设置。 - **数据量限制**:...

    SQL Server数据库迁移Mysql数据库工具

    3. **分析数据库结构**:使用mss2sql或其他类似工具,分析SQL Server数据库的模式,包括表、视图、存储过程、触发器等,生成对应的MySQL兼容脚本。 4. **数据转换**:将SQL Server中的数据转换为MySQL可以理解的...

    sqlserver2000数据库迁移mysql5.pdf

    这样做是为了保持数据的一致性和避免因字符编码不同导致的乱码问题。 安装MySQL的ODBC驱动是连接SQL Server和MySQL的关键。在安装`mysql-connector-odbc-5.1.8-win32.msi`后,通过“管理工具”中的“数据源(ODBC)”...

    mysql学习资料

    这是一个中文版的MySQL参考手册,提供了关于MySQL的所有详细信息,包括语法、函数、存储过程、触发器等。它是学习和查询MySQL功能的宝贵资源,涵盖了从基本查询到复杂数据库设计的所有内容。 2. **mysql备份与恢复...

    mysql导出指定数据或部份数据的方法

    在实际操作中,你可能还会遇到其他问题,如中文乱码。在这种情况下,可以调整导出时的字符集设置,确保数据的正确性。例如,使用`--default-character-set=utf8`参数来指定字符集。 了解和熟练掌握这些技巧对于...

    国内某互联网大厂技术部的MySQL中文资料.docx

    通过系统学习这些内容,开发者不仅可以熟练地进行数据库操作,还能深入理解MySQL的内部机制,以便在实际项目中做出更优决策,解决复杂问题。对于初学者,具备一定的数据库理论基础将有助于更好地吸收和应用这些知识...

    mysql数据导入到Oracle中

    - **触发器和存储过程**:如果原MySQL中有自定义的存储过程或触发器,可能需要在Oracle中重新创建。 - **性能优化**:根据目标Oracle数据库的特性,可能需要对导入后的表进行分区、索引优化等操作,以提高查询性能...

    MySQL导入导出数据库.pdf

    在导出和导入过程中,应确保源数据库和目标数据库的字符集设置一致,避免数据乱码问题。 3. 错误处理: 在导入过程中,可能会遇到错误,如语法错误、数据类型不匹配等,需要根据错误日志进行调试和修复。 总结,...

Global site tag (gtag.js) - Google Analytics