首页
友情链接
精美壁纸
给我留言
更多
关于我
Search
1
【插件】UNI APP 实现商米打印机功能支持T1,T2,V2机型
1,744 阅读
2
uniapp Click点击事件冲突解决
702 阅读
3
Typecho七牛插件,为您的网站访问加速
526 阅读
4
好用免费的JavaERP系统 开源ERP系统 华夏ERP评测
434 阅读
5
好用的API文档开源系统 showdoc使用评测
333 阅读
PHP
前端
uniapp
小程序/公众号
JavaScript
HTML/CSS
Java
Spring Boot
Spring Mvc
typecho主题/插件
typecho主题
typecho插件
开源软件
商城
营销工具
开发工具
视频/教程
Discuz主题/插件
SEO杂谈
数据库
MongoDB
MySQL
单片机
概念说明
电路相关
python
登录
/
注册
Search
标签搜索
python
人人商城
php
mysql
typecho
插件
java
微擎
seo
spring boot
discuz
uni-app
phpcms
教程视频
开源系统
源码
工具
css
杂谈
spring
哈根达斯
累计撰写
71
篇文章
累计收到
53
条评论
首页
栏目
PHP
前端
uniapp
小程序/公众号
JavaScript
HTML/CSS
Java
Spring Boot
Spring Mvc
typecho主题/插件
typecho主题
typecho插件
开源软件
商城
营销工具
开发工具
视频/教程
Discuz主题/插件
SEO杂谈
数据库
MongoDB
MySQL
单片机
概念说明
电路相关
python
页面
友情链接
精美壁纸
给我留言
关于我
搜索到
6
篇与
mysql
的结果
2022-04-18
linux 定时任务备份至七牛
场景生产数据定时备份的意义大家应该都是知道的,很多人备份只是备份到了本地,但是也会存在一定的隐患,比如客户一直不用系统,我们也不去注意,哪天服务器到期了过了几个月客户突然要用方向数据没了。。。使用到的工具主要看大家的服务器的安装情况,如果是安装了宝塔面板这种,有定时任务工具直接使用,而且也有免费的七牛云插件,设置起来超级简单,如果安装宝塔的不懂设置可以评论区留言,实在是太简单了本文就不讲了,说实话是会点鼠标就可以弄了基于linux系统内备份大概的意思就是你的mysql是自己用命令安装的。七牛平台shell脚本linux定时任务需要七牛云账号,用户需要自己创建,或者其它用其它云盘原理都是一样的(一)下载qshell工具并安装设置1. 工具下载说明文档与下载地址: 七牛工具下载 工具是七牛官方提供的,下载工具后传到服务器,主要看自己服务器的架构,我的服务是linux x86的,根据自己服务器去下载,把文件上传至服务目录/home/backup/shell 目录。并赋予权限chomd +x qshell2. 登录设置七牛云账号注意需要在工具目录下执行,如果需要任何目录执行需要添加环境变量可查看官方文档说明,更多说明以官方最新文档为准# 参数说明可自己根据情况修改 #ak :官方获取 #sk: 官方平台获取 #name : 任意用户名,不是七牛的账户,比如 db-test qshell account <ak> <sk> <name> #完成命令参考(二) shell编辑脚本在目录/home/backup/shell 下新建脚本backup.sh#!/bin/sh # mysql data backup script # # use mysqldump --help,get more detail. # 需要设置环境变量,crond中默认读取不到我们的一些环境 PATH=$PATH:/home/backup/shell export PATH dbname=<dbname> #备份文件目录 bakDir=/home/backup/sql logFile=/home/backup/backup.log month=` date +%Y%m ` # 七牛的备份目录,当前按数据库为一级目录,月份为2级目录如:dbname/202004/****.gz.sql qiniuPath=typecho_joe_theme/$month # 七牛空间名 qiniuBucket=<bucketName> datetime=`date +%Y%m%d%H%M%S` keepDay=7 echo "-------------------------------------------" >> $logFile echo $(date +"%y-%m-%d %H:%M:%S") >> $logFile echo "--------------------------" >> $logFile cd $bakDir bakFile=$dbname.$datetime.sql.gz # yum,apt-get,源码编译安装释放 mysqldump -u$user -p$password $dbname | gzip > $bakFile #docker安装执行方式,需要修改<dbname>为自己的数据库 #docker exec mysql5.6 sh -c 'exec mysqldump <dbname> -uroot -p"$MYSQL_ROOT_PASSWORD"' | gzip > $bakDir/$bakFile echo "数据库 [$dbname] 备份完成" >> $logFile echo "$bakDir/$bakFile" >> $logFile echo "开始上传备份文件至七牛云存储" >> $logFile #七牛上传命令,分片上传适用大文件,当前使用低频储存,具体命令可以查看文档 qshell rput $qiniuBucket $qiniuPath/$bakFile $bakDir/$bakFile --storage 1 | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" >> $logFile 2>&1 echo "删除${keepDay}天前的备份文件" >> $logFile find $bakDir -ctime +$keepDay >> $logFile find $bakDir -ctime +$keepDay -exec rm -rf {} \; echo " " >> $logFile echo " " >> $logFile 参考文献:qshell命令说明rput 操作说明(二) 添加定时任务需要使用到cron命令,本文不展开讲这个,需要了解的可以参考以下文献文献一: crontab配置方法文献二: Linux系统crontab定时任务的配置概要与常见问题文献三: crontab 与 环境变量下面直说具体操作,执行器需要先检查crond的状态service crond status,如果是在运行中就没什么问题编辑定时任务#修改当前用户定时任务 crontab -e 添加任务脚本,操作和vi是一样的# 每天凌晨3点执行脚本, 0 3 * * * /home/backup/backup.sh # 如果是测试可以用以下的脚本,意思是没2分钟执行一次,看看有没有成本 */2 * * * * /home/backup/backup.sh查看定时任务#查看当前任务情况 crondtab -l(三) 完成设置完成以后最好要检查下是否成功,建议先设置按分钟执行备份看看,如果中间有什么问题要多百度,一般都可以搜得到
2022年04月18日
28 阅读
0 评论
0 点赞
2022-04-17
【MySql】Specified key was too long; max key length is 767 bytes的解决方案
问题背景由于业务需要,需要做数据库迁移,迁移由5.7版本得mysql到现有的mysql5.6版本,主要是因为更innodb_large_prefix 参数有关由于MySQL的InnoDB引擎表索引字段长度的限制为767字节,因此对于多字节字符集的大字段或者多字段组合,创建索引时会出现该问题。在5.6中innodb_large_prefix 默认关闭,在5.7中默认开启。在5.6中默认为 offSpecified key was too long; max key length is 767 bytes原来是主键的长度太长,最大长度仅支持767字节,注意,这里的是字节。那么,我定义一个主键是varchar(500)的字段,不管我使用utf8编码,那么500字符长度将占用5003的字节长度(utf8最多支持3个字节长度);或是我使用utf8mb4编码,那么500字符长度将占用5004的字节长度(utf8mb4最多支持4个字节长度),都大大超过了767字节。如何去解决呢?先检查一下是不是数据库被限制了索引的大小,查询innodb_large_prefix这个字段,这个字段限制了索引前缀的大小。关闭此限制后,索引前缀的大小将可以达到3072字节。方法1:修改全局变量修改全局变量 ,当mysql重启后将失效,建议直接修改配置文件SHOW variables like 'innodb_large_prefix';如果查询的值是OFF的话 执行下面命令SET GLOBAL INNODB_LARGE_PREFIX = ON;另外,innodb_large_prefix这个属性在5.6上是默认关闭的,而在5.7上是默认开启的。执行完了 之后 还得查看当前的innodb_file_format引擎格式类型是不是BARRACUDA执行SHOW variables like 'innodb_file_format';如果不是的话则需要修改SET GLOBAL innodb_file_format = BARRACUDA;方法二:修改配置[mysqld] innodb_large_prefix = on innodb_file_format = BARRACUDA最后,创建表的时候,还需要指定表的 row format 格式为 Dynamic 或者 Compressed,如下示例:CREATE TABLE test( name varchar(500) CHARACTER SET utf8 COLLATE utf8_bin, PRIMARY KEY (`name `) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_bin ROW_FORMAT = Dynamic;版权声明:本文为CSDN博主「SunAlwaysOnline」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。参考原文链接:https://blog.csdn.net/qq_33591903/article/details/103927547
2022年04月17日
43 阅读
0 评论
0 点赞
2021-07-22
mysql位置距离排序功能实现
再实际的开发中,我们经常需要使用地理经纬度信息来做排序,比如查找附近的门店,或查找离我最近的人的需求等。可直接套用下方mysql查询语句进行数据查询排序sql中latitude为数据库表中的纬度,longitude代表经度{latitude} 代表传入的纬度,{latitude} 代表传入的经度,主要为用户当前位置信息,查询获得结果 distance 单位为米SELECT *, (round(6367000 * 2 * asin(sqrt(pow(sin(((latitude * pi()) / 180 - (${latitude} * pi()) / 180) / 2), 2) + cos((${latitude} * pi()) / 180) * cos((latitude * pi()) / 180) * pow(sin(((longitude * pi()) / 180 - (${longitude} * pi()) / 180) / 2), 2))))) AS distance FROM ec_store WHERE is_show = 1 and is_del = 0 ORDER BY distance asc
2021年07月22日
117 阅读
0 评论
1 点赞
2021-07-19
MySQL中字符串类型 char、varchar、text类型的区别
1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。2、 varchar可变长度,可以设置最大长度;适合用在长度可变的属性。3、 text不设置长度, 当不知道属性的最大长度时,适合用text。按照查询速度: char最快, varchar次之,text最慢。1. char类型char(n)中的n表示字符数,最大长度是255个字符; 如果是utf8编码方式, 那么char类型占255 * 3个字节。(utf8下一个字符占用1至3个字节)2.varchar类型varchar(n)中的n表示字符数,最大空间是65535个字节, 存放字符数量跟字符集有关系;MySQL5.0.3以前版本varchar(n)中的n表示字节数;MySQL5.0.3以后版本varchar(n)中的n表示字符数;varchar实际范围是65532或65533, 因为内容头部会占用1或2个字节保存该字符串的长度;如果字段default null(即默认值为空),整条记录还需要1个字节保存默认值null。如果是utf8编码, 那么varchar最多存65532/3 = 21844个字符。3.text类型跟varchar基本相同, 理论上最多保存65535个字符, 实际上text占用内存空间最大也是65535个字节; 考虑到字符编码方式, 一个字符占用多个字节, text并不能存放那么多字符; 跟varchar的区别是text需要2个字节空间记录字段的总字节数。PS: 由于varchar查询速度更快, 能用varchar的时候就不用text。
2021年07月19日
202 阅读
0 评论
0 点赞
2021-07-18
Java开发中 MySQL存储emoji表情报错的处理方法 MySQL中utf8mb4编码使用
在平时的网络平台应用开发中,需要需微信公众号的平台进行对接,在使用mysql存储微信昵称时常用用户使用emoji表情,常见的处理方式有如下:mysql使用utf8mb4编码程序中替换emoji为其它字符串今天我们主要来介绍mysql使用utf8mb4编码方法解决问题文章目录索引utf-8编码可能2个字节、3个字节、4个字节的字符,但是MySQL的utf8编码只支持3字节的数据,而emoji表情数据是4个字节的字符。如果直接往采用utf-8编码的数据库中插入表情数据,Java程序中将报SQL异常:ava.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'nickname' 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) utf8mb4编码是utf8编码的超集,兼容utf8,并且能存储4字节的表情字符。采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。一、要求1. MySQL的版本utf8mb4的最低mysql版本支持版本为5.5.3+,若不是,请升级到较新版本。2. MySQL驱动5.1.34可用,最低不能低于5.1.13一、配置修改1 .修改MySQL配置文件修改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'修改完成后重启mysql服务,并检查编码结果SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';显示如下:Variable_nameValuecharacter_set_clientutf8mb4character_set_connectionutf8mb4character_set_databaseutf8mb4character_set_filesystembinarycharacter_set_resultsutf8mb4character_set_serverutf8mb4character_set_systemutf8character_sets_dirC:datacollation_connectionutf8mb4_general_cicollation_databaseutf8mb4_unicode_cicollation_serverutf8mb4_unicode_ci其中参数变量 collation_connection 、collation_database 、collation_server是什么没关系,但必须保证以下参数变量必须是utf8mb4character_set_client:客户端来源数据使用的字符集character_set_connection:连接层字符集character_set_database:当前选中数据库的默认字符集character_set_results:查询结果字符集character_set_server:默认的内部操作字符集1 .数据库连接的配置数据库连接参数中:characterEncoding=utf8会被自动识别为utf8mb4,也可以不加这个参数,会自动检测。而autoReconnect=true是必须加上的。jdbc:mysql://127.0.0.1:3306/dbname?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimeZone=GMT+82 .修改字段名字符集修改nickname字符集编码为utf8mb4_unicode_ciALTER TABLE `tb_user` MODIFY COLUMN `nickname` char(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL;然后就可以保存emoji到数据库中,如下图可以在Navicat Premium中查看已保存的emoji表情
2021年07月18日
139 阅读
0 评论
0 点赞
1
2