获取建表语句:
show create table 表名
获取自定义函数创建语句:
show create function 函数名
获取存储过程创建语句:
show create procedure 函数名
索引没有现成的语句可以返回创建语句,不过可以获取到索引的详细内容:
show index from 表名
获取建表语句:
show create table 表名
获取自定义函数创建语句:
show create function 函数名
获取存储过程创建语句:
show create procedure 函数名
索引没有现成的语句可以返回创建语句,不过可以获取到索引的详细内容:
show index from 表名
这是一篇笔记,因为是第二次碰到了,记录一下,下次好找。
Git的新安全策略会导致使用git操作无所有权的仓库目录时报此错误,要解决可以有以下方案:
git config --global --add safe.directory "目录路径"
git config --global --add safe.directory "*"
reids本身是一个基于键值对数据存储的内存数据库,也就是只能通过数据的key来获取数据项目,那么它自然也就没有任何数据搜索方面的功能,只能依靠一定规则生成的key来获取数据。
虽然它的本体是这样,但redis也提供了几个模块为其添加了一部分搜索功能的支持,并将这些模块整合为了redis-stack,官网介绍:https://redis.io/docs/stack/,我暂时还没测试它是否可以直接替代原本的redis实例,但就命令形式上来看,应该是兼容的。
本文是对于redis-stack官网上提供的node.js示例记录的笔记。
redis-stack的安装我就不介绍了,直接从官网下载就好,或者使用docker之类的,本文只记录如何使用。
要在node.js中使用redis-stack的相关特性,我们需要redis-om
模块,使用npm i redis-om
安装进需要它的项目,关于该模块更详细的API介绍可以去其npm包页面上或者github仓库查看:https://github.com/redis/redis-om-node,不过要注意的是官方的示例中有些地方是错的,我会在下面对应的部分说明。 继续阅读[node.js]在redis上使用数据搜索
本文为node包sass的使用笔记。
写这篇文章,是因为我碰到了引用node_modules
目录中模块的scss
文件的需求,但是它总是提示找不到: “Error: Can’t find stylesheet to import.”,于是我搜了搜,发现说是要在渲染参数中添加loadPaths
数组来告诉sass去哪里找依赖文件,我在这个模块的typescript类型定义中也找到了这个参数名,但是我加上了之后并没有用,于是研究一番发现这个包使用的实际上并不是loadPaths
,而是includePaths
这个参数名,所以觉得有必要写篇笔记记录一下。
另外我发现有的解决方案中说可以在import的url前面加个~
来表示这个文件在node_modules
里,但我试了也没有用,这个特性似乎是webpack给sass引入的importer,所以单独使用sass的render api时此方式是不起作用的,如果使用的是sass-loader
的话可以使用这个方法。
本方法不考虑LGBTQIAPK等特殊群体,仅根据身份证号提取性别,不喜勿喷。
=TEXT(-1^MID("身份证号",17,1),"女;男")
根据身份证号第17位数N,单数为男,双数为女的规则,使用-1进行N次方计算,N为单数时结果还是-1,N为双数时结果为1,然后使用TEXT函数从后面的数组中获取结果。
最近被迫大量使用excel,所以我也学了点它的函数用法,做点笔记
根据身份证号码计算年龄的使用场景应该挺多的,但我在网上始终没找到一个能得到最准确结果的答案,于是东拼西凑写了个
#以下公式需要把#以及后面的内容删除才可以使用,因为excel的公式并不存在注释语法 =FLOOR( #把计算结果向下舍入,精度为1 DATEDIF( #计算日期差 TEXT( #把生日字符串格式化为日期 MID("身份证号",7,8),#提取身份证的生日部分 "0-00-00" ), TODAY(),#获取今天的日期 "M" #以月为单位计算前两个参数的差值 )/12, #除以12变成年 1)
网上很多方法是直接计算两个日期之间的年差,没有考虑到过了生日才长一岁的问题,所以我计算的是月差,毕竟每年的月份是固定12个,那么只要用总月数除以12再舍掉小数就是正确的周岁结果了
在使用ES导入语法的文件中想要使用require导入一个CommonJS模块的话,可以使用module.createRequire来创建一个require函数。
import { createRequire } from 'module'; const require = createRequire(import.meta.url);
在一般的使用CommonJS导入语法的文件中想要使用ES语法导入模块的话,可以使用import
函数,要注意的是这是一个异步函数,返回一个Promise
,所以需要await
它或者使用then
来等待返回结果,如下
(async()=>{ const fs=await import('fs); })();
browserify有一个参数paths
可以指定代码打包时的require在找不到模块时再去哪里进行搜索,只要在把paths
参数设置为数组,然后在里面列出模块所在目录的完整路径即可。
例:
browserify({ entries: [name], debug: true, plugin: [], paths:[ Path.resolve(__dirname,'../'), ], })
写了个Browserify插件,之前一直没问题,但今天我改了点打包流程,结果一直报write after end
错误,找了半个晚上,发现是因为我的插件函数写的是异步的,里面有个await异步读文件。
之前一直没出问题是因为后面的打包流程时间够长,能让这个插件正常执行完,但今天改了流程之后部分情况下很快就执行完了,于是当插件异步流程执行完后继续就出错了,修正方法是把异步文件读取改成同步的。
不是我想水一篇博文,在解决完前一篇博文的问题之后,立刻就又碰上另一个奇葩问题,进程直接跑着跑着没了,留下一个错误码3221226505。
在我左思右想把代码改来改去,包换来换去之后依然不能解决问题,然后发现是canvas包的问题,之所以一直没有发现是它,是因为出问题的代码里并没有用到这个包,它是在别的地方被引用到的,可能它的二进制模块破坏了node的环境,导致别的代码执行的时候触发了异常导致程序崩溃。
这个问题其实也不是第一次出现了,而且每次都是因为项目中同时有canvas和sharp两个模块才出现问题,在某些版本下不会出问题,某些版本下又会出现不一样的错误,这次就是和上次不一样所以才没能快速发现。
就这点破事,又浪费了我一个晚上,这时候我真想给搞出这bug的人屁股上来一脚。
今天一个破问题浪费我一下午的时间,我一直在找自己代码是不是有什么问题,或者是不是express有什么bug,结果到最后发现原来是iis的问题。
如果是在win上用iis反代站点的话,通常都会用iis的requestRouter插件,在他的设置页面Application Request Routing
里网上的教程通常都勾着Reverse rewrite host in response headers
这一项,就是因为这个设置导致后端返回的http头中location指定的跳转地址被替换为了此站点的地址,不知道这是个什么智障操作。
找到虚拟机vmx文件,用文本编辑器打开,找到usb.restrictions.defaultAllow = "FALSE"
,改为usb.restrictions.defaultAllow = "TRUE"
即可。
这是一篇小笔记,truenas默认没法使用pkg install
来安装包,会出现以下报错
pkg: file:///usr/ports/packages/meta.txz: No such file or directory ..... pkg: file:///usr/ports/packages/packagesite.txz: No such file or directory Unable to update repository local
解决方案是进入/usr/local/etc/pkg/repos/
,把local.conf
中enabled
后的yes改成no,把FreeBSD.conf
中enabled
后的no改成yes即可。
方案来源 : https://www.justinsilver.com/random/fix-pkg-on-freenas-11-2/
show table status from `库名` where name='表名'
然后从中读取Data_length
字段就是该表占用的字节数。
我查的时候看到一堆答案都是遍历表里每个字段然后sum加起来计算,就没搞懂这是为啥。
这是一篇错误处理记录,该错误出于node-mysql2模块,我找到的相关issue在此 https://github.com/sidorares/node-mysql2/issues/1239
今天把代码推上服务器跑起来直接报错,但是不管我怎么检查我写的代码都没有问题,最后只能上网找,然后搜到了这个issue。
问题就出在8.0.22以及之后的版本的Mysql Server对于使用prepared statement传输的数值类型数据表示方法不一样了,导致支持prepared statement的mysql库按照原来的规则传输数据时发生兼容性问题而报错。
在库作者按照新方法修好之前,临时的解决方案可以是覆写连接或连接池的execute方法,在其中把所有数字参数用.toString()
转换成字符串,这样就可以正常使用prepared statement了。
这篇博文是对于该模块https://www.npmjs.com/package/sharp的笔记,这是一个nodejs上用于处理图片的模块。
遇到的问题是该模块处理手机拍摄的照片时(带有EXIF方向信息的图片),不会自动按照该图的EXIF信息先旋转图片到正确的方向再进行处理,导致处理完的图片会转向错误的方向。
然后我翻了一下API文档里的rotate部分,光看第一行就可以知道这并不是一个bug:
rotate the output image by either an explicit angle or auto-orient based on the EXIF
Orientation
tag.
如果调用rotate时不带参数的话会根据EXIF信息的方向进行旋转,也就是说它是特意默认不自动旋转的,要解决这个问题只要在调用所有处理函数之前先调用一个没有参数的rotate()
即可。
比如
sharp(图片路径) .rotate() .resize(200, 200) .jpeg({quality:90}).toBuffer();