使用Perl DBI操作MySQL的一些建议

作者:吴炳锡 时间:2024-01-16 11:20:55 

使用perl连接mysql,这个网上有很多案例了,一般大家都是DBI下的DBD::MySQL这个模块进行.这里做一个mask弄一个TIPS:
 Perl DBI MySQL的字符集为UTF8
 Perl DBI 特殊字符写入时报错
 Perl DBI 连接自动重连或是连接超时
 
1.当MySQL的字符集是UTF8时需要引入:
 


use utf8;
binmode(STDOUT, ':encoding(utf8)');
binmode(STDIN, ':encoding(utf8)');
binmode(STDERR, ':encoding(utf8)');

目的:
解决perl连接mysql到数据后读取显示结果为乱码的问题.
 
2.对于特殊字符的写入,最好使用:


my $sth=$dbh->prepare("insert into wubx.WeekEvent values(?,?,?,?,?,?,?)");
$sth->execute($OId,$CId,qq/$Time/,$EventType,qq/$CDesc/,$PId,$RFlag);


对于字符串有可能是用户提交的用qq//包裹,减少特殊字符造成SQL不能执行的情况.
3.如果连接两个数据库有交换的操作或是迁数据,要考虑连连超时的情况.
 报错:MySQL server has gone away
处理办法:
  在DBD::mysql 4.012以后支持DBI连接的自动重连.需要设置:


$dbh->{mysql_auto_reconnect} = 1;

  在早期的模块中不支持,简单的方法:
  


$dbh->do('set SESSION wait_timeout=72000');
$dbh->do('set SESSION interactive_timeout=72000');

  此方法适用别的语言连MySQL连接短期丢失或是Server的timeout时间设置太短.

标签:MySQL
0
投稿

猜你喜欢

  • python根据txt文本批量创建文件夹

    2021-12-18 21:24:52
  • PyCharm搭建一劳永逸的开发环境

    2022-12-23 20:24:23
  • sql怎样显示出评论最多的文章?

    2008-08-08 12:17:00
  • 浅谈django框架集成swagger以及自定义参数问题

    2022-01-09 20:25:10
  • go语言base64用法实例

    2024-04-26 17:22:04
  • Python实现判断给定列表是否有重复元素的方法

    2021-05-25 13:34:59
  • PHP实现克鲁斯卡尔算法实例解析

    2023-09-08 19:35:57
  • Golang使用CGO与Plugin技术运行加载C动态库

    2024-02-05 06:20:27
  • 几种设置表单元素中文本输入框不可编辑的方法总结

    2024-04-18 09:34:14
  • Python中的函数式编程:不可变的数据结构

    2023-09-05 07:16:35
  • 利用python脚本如何简化jar操作命令

    2021-02-12 11:08:15
  • python中opencv图像叠加、图像融合、按位操作的具体实现

    2023-11-11 21:39:21
  • Python开发工具Pycharm的安装以及使用步骤总结

    2022-09-15 08:21:01
  • MySQL 存储过程中执行动态SQL语句的方法

    2024-01-12 21:22:22
  • Python使用import导入本地脚本及导入模块的技巧总结

    2022-09-07 15:09:29
  • 在python中使用requests 模拟浏览器发送请求数据的方法

    2022-05-05 03:17:35
  • Centos7 安装 PHP7最新版的详细教程

    2023-10-16 21:14:12
  • Vue+Element自定义纵向表格表头教程

    2023-07-02 17:10:38
  • 两个JS之间的函数互相调用方式

    2024-04-10 10:39:45
  • Go语言kylin任务自动化实例详解

    2024-05-08 10:24:04
  • asp之家 网络编程 m.aspxhome.com