一首小诗
寒蝉凄切,对长亭晚,骤雨初歇。都门帐饮无绪,留恋处,兰舟催发。执手相看泪眼,竟无语凝噎。念去去,千里烟波,暮霭沉沉楚天阔。 多情自古伤离别,更那堪,冷落清秋节!今宵酒醒何处?杨柳岸,晓风残月。此去经年,应是良辰好景虚设。便纵有千种风情,更与何人说?
原创
2022年05月17日 20:09
  • 翟码农
  • php
  • 188
  • 1
  • 0

今天测试“审批流撤销”功能,突然遇到一个奇怪的问题:日志显示新增数据成功,db里却查不到。

代码如下:

try{
$service_document->retreat($workflow_type_id, $doc_manage_id);
$this->requestSuccessResponse();
}catch(\Exception $e){
$service_log = new LogService();
$service_log->createLog($doc_manage_id, LabelService::TEXT_LOG_CATEGORY_DOCUMENT, $e->getMessage());
$this->requestErrorResponse("retreat fail");
}


createLog是添加日志记录的方法。测试功能,提示了retreat fail,但是数据库日志表里却看不到数据。


新增日志的方法,打印出sql以及新增之后的主键ID,都是没问题的。


那问题出在哪儿呢?

问题出在Service里retreat方法上。先上代码:

$res3 = $obj_model->table('tms_new_workflow_process')
->where(array('workflow_type_id' => $type, 'subject_id'=> $doc_manage_id))
->save($process_update);
if(false === $res3){
$obj_model->rollback();
throw new Exception("update workflow process fail!");
}
$obj_model->commit();
原创
2022年09月30日 11:39
  • 翟码农
  • php
  • 131
  • 0
  • 0

今天在thinkphp6框架里连接mongodb,报authentication fail错误,如下图所示:



修改框架底层文件

网上查到的解决方法如下,但是对我无效:

 //文件位置:/vendor/topthink/think-orm/src/db/connector/Mongo.php
if (empty($config['dsn'])) {
       $config['dsn'] = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}/" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '');
       $config['dsn'] .= ($config['database'] ? "/{$config['database']}" : '');  //添加此行代码
}

修改之前打印出来的连接地址格式如下(非真实地址,仅供参考格式):

原创
2022年09月08日 18:37
  • 翟码农
  • mysql
  • 108
  • 0
  • 0
经过验证,我把数据库账号发给了同事,结果同事连不上数据库。

报如下错误:
1251-Client does not support authentication protocol requested by server. consider upgrading MySQL client.

英文稍微好点儿, 就大概知道是啥问题了。consider upgrading MySQL client,意思是建议考虑升级mysql客户端版本号。

根本原因是因为我安装了8.0版本的MySQL,密码加密方式发生了变化。而低版本的navicat客户端不支持,所以升级下客户端就好了。
原创
2022年09月07日 20:08
  • 翟码农
  • php
  • 107
  • 0
  • 0

今天在Centos7.6系统下编译安装php8.0,报如下错误:

ext/mbstring/.libs/mbstring.o: In function `_php_mb_match_regex':
/root/php-7.4.26/ext/mbstring/mbstring.c:1027: undefined reference to `onig_new_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1029: undefined reference to `onig_initialize_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1031: undefined reference to `onig_set_match_stack_limit_size_of_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1034: undefined reference to `onig_set_retry_limit_in_match_of_match_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1037: undefined reference to `onig_search_with_param'
/root/php-7.4.26/ext/mbstring/mbstring.c:1040: undefined reference to `onig_free_match_param'
ext/mbstring/.libs/php_mbregex.o: In function `zif_mb_ereg_match':
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1401: undefined reference to `onig_new_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1402: undefined reference to `onig_initialize_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1410: undefined reference to `onig_match_with_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1411: undefined reference to `onig_free_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1407: undefined reference to `onig_set_retry_limit_in_match_of_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:1404: undefined reference to `onig_set_match_stack_limit_size_of_match_param'
ext/mbstring/.libs/php_mbregex.o: In function `_php_mb_onig_search':
/root/php-7.4.26/ext/mbstring/php_mbregex.c:873: undefined reference to `onig_new_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:875: undefined reference to `onig_initialize_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:877: undefined reference to `onig_set_match_stack_limit_size_of_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:880: undefined reference to `onig_set_retry_limit_in_match_of_match_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:883: undefined reference to `onig_search_with_param'
/root/php-7.4.26/ext/mbstring/php_mbregex.c:884: undefined reference to `onig_free_match_param'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] 错误 1
原创
2022年08月05日 09:11
  • 翟码农
  • php
  • 145
  • 0
  • 0

在数学中,我们知道当a=b,b=c时,可以得出a=c的结论。


但是PHP中,等于分为==和===这两种。
针对==这一种,在a==b,b==c的前提下,是不能一定得出a=c的结论的。


示例:


示例输出结果是”I love 0“而不是”I love 1“,即a变量不等于(!=)c变量。


原创
2022年07月08日 10:29
  • 翟码农
  • 英语笔记
  • 209
  • 0
  • 0
备考英语笔译3级考试。

文章乃为本人学习翻译的成果,仅供参考。

Brad Hooper quit his previous job at a grocery in Madison because his boss was "a little crazy". The manager threatened to sack him and other cashiers for refusing orders to work longer than their agreed hours. Not long ago, Mr Hooper's decision to walk out might have looked foolhardy because he has no education beyond high school and suffers from recurrent ill-health including insomnia.

Brad Hooper 上次辞职是在麦迪逊的一个杂货店,因为他的老板有点疯狂。当时经理要求他和收银员们拿出比约定的更长的时间去工作,如果他们拒绝的话,就威胁要开除掉他们。不久前,Hooper先生的这个走出困境的决定或许显得有点莽撞,毕竟他只有初中学历,而且反反复复的失眠,使得他的身体状况不尽如意。
原创
2022年05月11日 23:20
  • 翟码农
  • 前端综合
  • 256
  • 0
  • 0
就是下面这段代码:
$("#list_language_file").html(htmlLanguageFile);
在页面里开始有效果,可突然我又发现不起作用了,list_language_file结点里的内容无法显示。

场景:

从文件列表里,点击新增tab页,打开文件详情页,代码大致如下:
$('#mainTab').tabs('add',{
width:$("#mainTab").parent().width() - 180,
title: " Document Detail-" + dataCellClick.doc_name,
iconCls: null,
href: 'Document/documentDetail?doc_manage_id='+dataCellClick.doc_manage_id,
closable: true
});

故障情况:

经过多次测试,发现只有在打开第二个文件的详情页时,上面html方法才没起作用。

问题原因:

tabs打开的页面仍处在同一个html页面里,所以当打开多个文件详情页时,开头id元素重复了。(经过检查,发现html方法作用在第一个详情页里去了)
原创
2022年05月10日 09:37
  • 翟码农
  • 前端综合
  • 230
  • 0
  • 0
<
原创
2022年04月23日 21:36
  • 翟码农
  • mysql
  • 425
  • 4
  • 0

在这篇文章:

laravel 中用group by和order by排序不正确的问题解决

中,提出了如下知识点:

mysql中order by是在group by之后执行的,而group by则是在同一组数据里挑选出id最小的数据记录作为汇总记录

以前的经验,是先在order by的子查询末尾加上:

limit 1000

结果今天发现它不生效。


相关表sql:

CREATE TABLE `tms_doc_manage` (
	`doc_manage_id` INT(11) NOT NULL AUTO_INCREMENT,
	`doc_main_id` INT(11) NOT NULL COMMENT 'doc主表id',
	`section_id` INT(11) NOT NULL DEFAULT '1' COMMENT 'section id',
	`modify_times` TINYINT(2) NOT NULL DEFAULT '0' COMMENT '文件修改次数',
	`status` TINYINT(2) NOT NULL DEFAULT '1' COMMENT '0-delete 1-inactive 2-new 3-submitted 4-processing 5-approve 6-reject',
	`creator_id` INT(11) NULL DEFAULT NULL,
	`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
	`updater_id` INT(11) NULL DEFAULT NULL,
	`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
	PRIMARY KEY (`doc_manage_id`)
)
COMMENT='文档管理表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=0
;
原创
2020年09月26日 21:57
  • 翟先森
  • Linux
  • 2405
  • 0
  • 0

这周给服务器安装环境,其中一部分是安装神通数据库。由于网上有关神通数据库的资料实在是不多,踩了不少坑,本文现将安装的详细过程及其中遇到的坑记录下来。


备份旧服务器上的神通数据库

开发环境是Windows系统,有安装神通对应的软件工具,其中“DBA管理工具”软件就可以对数据库进行逻辑备份,将数据库导出成osr后缀的文件。


新服务器上安装神通数据库

此次要安装环境的服务器主板是龙芯主板(loongson),神通数据库有对应的源码,可自行下载:各个类型版本的神通数据库下载


下载安装包(假定是shentong.tar.gz),解压后,开始进行安装(假定解压在/opt/shentong目录下)。

1. 全局修改st.propertities文件

修改/opt/shentong/Disk1/InstData/st.propertities文件,将OSRDB全部替换成我们要建的数据库名,例如BLUEZHAI。

:s/OSRDB/BLUEZHAI/g

查了许久资料,也尝试了许久时间,没能找到什么时候可以自行用命令创建数据库,所以只好将默认数据库直接改成我想要的数据库。

要建多个库的话,我这种方式就行不通了。


2.执行安装命令,开始安装神通数据库