MySQL数据库应用

海山数据库(He3DB)源码详解:海山Mysql 崩溃恢复(3)-日志应用 为崩溃恢复的入口函数,其从调用,传入参数读取存在系统表空间的获得的,该函数在日志解析、日志应用等线程创建之前,进行崩溃恢复操作。MySQLredo日志崩溃恢复整体流程如图所示,其中,日志应用的流程主要集中在右边部分,用于解析或应用日志记录体,用于恢复页面函数,这是应用日志记录到数据库页面的关键步骤。图中还显示了日志解析和日志应用流程之间的交互,特别是在解析日志记录后,如何将它们应用到数据库页面以完成恢复过程。本文将针对日志应用过程中涉及到的几个函数源码进行详细解析。 阅读详情
一、MySQL 二进制日志
1.启动二进制日志
(1)概念及功能
二进制日志以事件的形式记录各个更新操作,每个事件都会附加一些其他信息,
如事件的开始时间、结束时间等。
二进制文件内容为二进制信息,不可直接查看。
二进制日志主要用于记录数据库的变化情况,内容主要包括数据库所有的更新操 作,如 use 语句、insert 语句、delete 语句、update 语句、create 语句、alter 语 句和 drop 语句等。以事件形式记录了所有的DDL和DML(除了数据查询语句)语句,还包 含执行的消耗的时间,在数据丢失的紧急情况下,我们可以利用binlog日志功能进行数据恢 复。
数据库管理员可以通过二进制日志查看数据库过去某一时刻发生了哪些变化,必 要时可以使用二进制日志恢复数据库。
(2)开启日志功能
查看是否开启:MySQL 命令“show variables like 'log_bin';”可以查看二进 制日志是否开启,默认为 OFF,表示没有开启二进制日志。
开启日志:在 MySQL 配置文件 my.ini (该文件默认位置位于 MySQL 根目录 下,5.7的版本在C盘下找my.ini文件,如C:\ProgramData\MySQL\MySQL Server 5.7)的 [mysqld] 选项组中,添加“log_bin= D:\db_data\mysqllog\binary_log”可以开启二进制日志,配置的日志路径中的文 件夹必须提前建好,否则重启mysql服务报错。
1 ‐‐ 参数 log_bin 的值定义了二进制日志文件名。二进制日志参数一旦开启,
2 MySQL 将自动创建二进制日志文件,如 binary_log.000001。
3 ‐‐ 每次重启 MySQL 服务后,都会生成一个新的二进制文件,扩展名数字依次递增,
4 如 binary_log.000002等。MySQL 还会创建一个二进制日志索引文件
5 ‐‐ 使用 MySQL 命令“show variables like 'log_bin_index';”,可以查看二进制
6 日志索引文件的路径。
7 ‐‐ 二进制日志索引文件的内容是所有二进制日志文件的清单,它记录了所有二进制日志文
件
8 的绝对路径。show binary logs;可以查看日志文件清单列表
2.查看二进制日志文件的内容
由于二进制日志文件的内容以事件的方式进行存储,数据库管理人员可以使用 MySQL
命令“show binlog events”方便地查看二进制日志文件的内容。
(1)语法结构:
1 ‐‐ 语法结构:
2 SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
3 ‐‐ 语法解释:
4 FROM pos:pos 指定查看二进制日志文件的位置起始点(起始位置,),可以小于第一行
的
5 起始位置,或者值已经优点位置点,如图下文日志事件截图。
6 LIMIT [offset,]:offset指定查看二进制日志文件的位置起始点(起始行)
7 【从设置的pos开始算偏移量】,不写从第0行开始,
8 不指定就是将该二进制日志文件的末尾位置点作为终止点。
9 row_count:查询总条数。
(2)使用
1 show binlog events; #只查看第一个binlog文件的内容
2 show binlog events in 'mysql‐bin.000002';#查看指定binlog文件的内容
3 show binary logs; 或show master logs; #获取binlog日志文件列表
4 show master status; #查看当前正在写入的binlog文件及偏移位置
(3)常用命令
1 ‐‐ 1、先查看日志是否开启,未开启则开启
2 show variables like 'log_bin';
3 ‐‐ 2、查看有哪些日志文件
4 show binary logs;
5 ‐‐ 3、查看当前正在写入的日志文件
6 show master status;
7 ‐‐ 4、查看某个日志文件里的信息
8 show binlog events in 'mysqllog.000001';
9 ‐‐ 5、查看指定位置的日志事件
10 show binlog events in 'mysqllog.000001' from 292 limit 2, 2;
11 ‐‐ 6、重新产生新日志文件
12 flush logs;
3.使用二进制日志文件恢复数据库
工具mysqlbinlog ,在命令窗口下输入该工具命令当数据库遭到破坏时,数据库管理人员可以借助 mysqlbinlog 工具,读取二进 制日志文件中指定的日志内容,并将该日志内容复制、粘贴到 MySQL 客户机中直接 运行,将数据库恢复到正确的状态。
1 读取二进制日志文件内容:mysqlbinlog ‐‐no‐defaults D:\db_data\mysqllog.00000 1;
也可以使用管道操作符“|”,直接将指定的二进制日志内容导入到MySQL 客户 机中运行,管道操作符“|”的使用方法如下:
1 mysqlbinlog 日志文件 | mysql ‐u 用户 ‐p
(1)基于操作点方式恢复数据库
1 ‐‐ 找到操作点
2 show binlog events in 'mysqllog.000001';
3 ‐‐ 使用mysqlbinlog指定恢复的起始和结束点
4 mysqlbinlog ‐‐start‐position=2492 ‐‐stop‐position=2724
5 "D:\db_data\mysqllog.000001" ‐d cater | mysql ‐u root ‐p 具体密码;
(2)基于时间点方式恢复数据库
1 ‐‐1、 将二进制日志输入到txt文件,变成我们看得懂的形式
2 mysqlbinlog ‐‐no‐defaults ‐‐base64‐output=decode‐rows
3 D:\db_data\mysqllog.000001 > D:\db_data\000010.txt
4 ‐‐ 2、打开txt文件找到要恢复操作的时间点
5 mysqlbinlog ‐‐no‐defaults "D:\db_data\mysqllog.000001"
6 ‐‐stop‐datetime="2020‐12‐27 11:16:35" | mysql ‐uroot ‐p123456
(3)使用例子
1 ‐‐ 使用二进制日志文件还原误操作的数据
2 ‐‐ 1、先查看日志是否开启,未开启则开启
3 show variables like 'log_bin';
4 ‐‐ 2、查看有哪些日志文件
5 show binary logs;
6 ‐‐ 3、查看当前正在写入的日志文件,确定文件名
7 show master status;
8 ‐‐ 4、刷新日志,产生新的日志文件,方便恢复时候查看
9 flush logs; ‐‐ 刷新后到日志目录下确认
10 ‐‐ 5、插入数据(一个订单,及订单下的两条明细)
11 INSERT INTO
`t_order`(STATUS,MONEY,REMARKS,CASHIER_ID,ORDER_TIME,COOK_ID,
12 COOK_TIME)
13 VALUES ('1', '0', '焖肉细米线,不要味精', 10,NOW(),17,NOW());
14 INSERT INTO
`t_orderdetail`(ORDER_ID,FOOD_ID,FOOD_NUM,TASTE,COUNT,REMARK)15 VALUES ('19', '10', '小碗', '焖肉',1,'不要腌菜');
16 INSERT INTO
`t_orderdetail`(ORDER_ID,FOOD_ID,FOOD_NUM,TASTE,COUNT,REMARK)
17 VALUES ('19', '14', '小碗', '杂酱',2,'不要腌菜');
18 ‐‐ 6、手动删除插入的第一条订单明细(模拟误操作)
19 ‐‐ 7、查看当前日志文件信息
20 show binlog events in 'mysqllog.000002';
21 ‐‐ 8、挨条查看,找到三次插入和一次删除操作的日志,
22 ‐‐确认删除掉这条数据对应的插入操作日志的起始点(如下他截图)
23 起始是480,结束是753
24 ‐‐ 9、(基于操作点方式)还原刚才误删的数据(实质为执行这条数据对应插入日志的SQ
L)
25 ‐‐ 在命令提示符窗口下,进入mysql的bin目录后执行如下命令:
26 mysqlbinlog ‐‐no‐defaults ‐‐start‐position=480 ‐‐stop‐position=753
27 "D:\db_data\mysqllog.000002" ‐d cater | mysql ‐u root ‐p
28 ‐‐ 10、(基于时间点方式)还原刚才误删的数据(实质为执行这条数据对应插入日志的SQ
L)
29 ‐‐ 在命令提示符窗口下,进入mysql的bin目录后执行如下两个命令:
30 ‐‐ 1》先把日志文件转为看得懂的文件
31 mysqlbinlog ‐‐no‐defaults ‐‐base64‐output=decode‐rows
32 D:\db_data\mysqllog.000003 > D:\db_data\00003.txt
33 ‐‐ 2》从转出的00003.txt文件找到要还原的操作的起始和结束时间点后,执行如下命
令:
34 mysqlbinlog ‐‐no‐defaults
35 ‐‐start‐datetime="2020‐12‐27 15:25:31"
36 ‐‐stop‐datetime="2020‐12‐27 15:25:34" "D:\db_data\mysqllog.000003"
37 | mysql ‐uroot ‐p
注意:如果要还原的是误修改的数据,还不能只是简单的执行它的插入日志,可能要先
删了这条数据,再从插入开始依次还原相关操作。
二、MySQL 备份和还原
1.数据备份的意义
(1)误区以为复制就是备份(backup)
以硬件备份代替备份
只把数据文件作为备份的目标
2.逻辑备份
(1)工具:MySQL 转储数据库时常用的自带工具 mysqldump备份数据库。
1 mysqldump ‐uroot ‐p ‐l ‐F [ ‐‐database ] choose > d:\db_backup\choose.sql
2 数据库备份期间,使用“‐l”参数为 choose 数据库施加读锁,避免备份期间数据发生变
化。
3 数据库备份期间,如果开启的是二进制日志,则使用“‐F”参数关闭所有的二进制日志文件,
4 [ 选项 database 可以省略。]。
(2)几种备份方式:
1 1》备份所有数据库:打开 cmd 窗口,执行以下 mysqldump 命令
2 (先建好目录和文件,没有分号结束):
3 ‐‐ 备份所有数据库
4 mysqldump ‐uroot ‐p ‐‐all‐databases > d:\db_backup\alldb.sql
5 2》备份部分数据库
6 ‐‐ 备份cater数据库
7 mysqldump ‐uroot ‐p ‐‐databases cater > d:\db_data\cater.sql
8 ‐‐ 备份某几个(cater,card)数据库
9 mysqldump ‐uroot ‐p ‐‐databases cater card> d:\db_data\cater2.sql
10 3》备份某几个数据表
11 ‐‐ 备份cater数据库中的t_order表和t_food表
12 mysqldump ‐uroot ‐p cater t_order t_food> d:\db_data\cater.sql
(3)备份数据库时的一致性问题
同一时刻取出所有数据:
对于事务支持的存储引擎,如 Innodb 或 BDB 等,可以通过控制将整个备份过程 保持在同一个事务中,使用“--single-transaction”选项。
1 mysqldump ‐uroot ‐p ‐‐single‐transaction cater > d:\db_data\cater.sql
数据库中的数据处于静止状态:
通过以下锁表参数,可以保证数据库中的数据处于静止状态。
--lock-tables 每次锁定一个数据库的表,此参 数默认为 true。
--lock-all-tables 一次锁定所有的表,适用于 dump 的表分别处于各个不同的数据库中的情况。
3.使用 source 命令还原数据库(1)概述:
对于已经备份的包含 create 语句、insert 语句的文本文件,可以使用 MySQL 的 source 命令将数据库的备份文件导入到数据库中。
(2)语法:
1 source filename.sql
2 filename.sql 为 mysqldump 工具创建的包含 DDL 语句和 DML 语句的数据库文件(含路
径))。
3 注意,执行时不需要指定数据库名。
(3)注意事项:
执行 source 命令前必须使用 use 语句选择好数据库,不然会出现“error 1046(3D000):no database selected”的错误。
只能在 cmd 界面执行,不能在 mysql 工具里面执行 source 命令,否则会报 错。因为 cmd 是直接调用 mysql.exe 来执行命令的,而这些诸如 Navicat for
MySQL 的编辑工具,只是利用 MySQL Connector 连接 MySQL 来管理 MySQL,并不是直接调用 mysql.exe。
(4)使用步骤及例子:
1 ‐‐ 上文备份某几个表,然后创建一个新的数据库来还原刚才备份的表
2 ‐‐ 1、备份cater数据库中的t_order表和t_food表,在命令窗口下进入mysql的bin目录执
行:
3 mysqldump ‐uroot ‐p cater t_order t_food> d:\db_data\cater.sql
4 ‐‐ 2、navicate下创建一个数据库cater2
5 ‐‐ (准备还原)
6 ‐‐ 3、用mysql命令先登录数据库
7 mysql ‐u root ‐p
8 ‐‐ 2、如果备份文件里没有备份数据库的,需要指定数据库
9 use 数据库名;
10 ‐‐ 3、执行还原文件
11 source d:\db_data\cater.sql
4.逻辑备份还原综合示例
(1)需求场景
1. 某大型数据库运行期间,开启了二进制日志。
2. 凌晨 1:00 时,数据库处于正常状态。
3. 从凌晨 1:00 开始,数据库管理员开始备份数据库,直到凌晨 2:00 为止,数据库
备份成功。
4. 数据库一直正常运行到凌晨 3:00,然后数据库崩溃,数据库无法正常访问。数据
库管理员恢复数据库,直到凌晨 4:00,数据库恢复成功
(2)处理思路:
1 (1)凌晨 1:00 数据库管理员使用 mysqldump 命令备份数据库(以 choose 数据库为
例)
2 mysqldump ‐uroot ‐p ‐l ‐F [ ‐‐database ] choose > d:\db_backup\choose.sql
3 (2)凌晨 2:00 数据库备份成功。在凌晨 2:00 到凌晨 3:00 数据库正常运行期间,
4 数据库用户对 choose 数据库中的表进行的 DML 操作将记录在最新的二进制日志文件中
5 (3)凌晨 3:00 数据库突然崩溃,凌晨 4:00 才发现数据库无法正常访问,此时需要
6 恢复数据库。使用 source 命令将choose 数据库还原至凌晨 1:00 时的 SQL 语句为
7 source d:\db_backup\choose.sql。该步骤实现了 choose 数据库的完全备份。
8 (4)使用 mysqlbinlog 运行最新的二进制日志文件 binary_log.000011 中所有的
9 SQL 语句,则将凌晨 2:00 至凌晨 3:00 之间对数据库 choose 所进行的正常 DML 语句
10 执行恢复操作,恢复语句如下:
11 mysqlbinlog ‐‐no‐defaults D:\db_data\mysqllog\binary_log.000011
12 | mysql ‐uroot ‐p
5.MySQL 存储引擎和物理备份
数据库中的数据以文件的方式组织在一起,物理备份最简单的实现方法就是对这 些文件进行复制、粘贴。
如果在物理备份期间,MySQL 服务实例没有关闭,备份过的数据可能已经发生 了变化,此时需要借助热备份工具实现物理备份。
InnoDB 和 MyISAM 是许多人在使用 MySQL 时最常用的两个表类型
MyISAM 类型不支持事务处理等高级处理,而 InnoDB 类型支持。MyISAM 类 型的表强调的是性能,其执行速度比 InnoDB 类型更快
物理备份的 3 种方式:冷备份、温备份、热备份
三、MySQL 复制
1.复制的概念
MySQL 复制(replication)是将一台 MySQL 主服务器(master)的数据更改异步地
复制到另外一台或多台从服务器(slave)的过程。复制的内容可以是记录的更新,也可以
是更新语句(如 insert 语句、update 语句、delete 语句)。
所谓异步,是指从服务器的数据更新与主服务器的数据更新存在一定时差(虽然延时非 常小)
复制操作是异步进行的,即在进行复制时,所有对复制中的表的更新必须在主服务器上 进行,从服务器不需要持续地保持连接来接受主服务器上的数据,以避免用户对主服务器上 的表进行的更新与对从服务器上的表所进行的更新之间相冲突。
2.复制的实现
MySQL 支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可 以作为其他从服务器的主服务器。如果 MySQL 主服务器的访问量比较大,通过复制技术,可使从服务器来响应用户的查询操作,从而降低了主服务器的访问压力,同时从服务器也可以作为主服务器 的备份服务器。
一般而言,数据库复制技术可以从以下几个方面改善分布式数据库集群系统的功 能和性能:可用性、性能、可扩展性、备份
3.MySQL 主从复制步骤
(1)master 主服务器配置
1 ‐‐1、 配置主服务器数据库配置文件:修改my.ini 配置文件,一般情况下该文件位于 MyS
QL
2 主安装目录下,具体的配置内容如下:
3 server_id=1。server_id 属性值为数据库 ID,此 ID 唯一不能重复,否则主从复制会发
生错误
4 log_bin= binary_log。log_bin 属性值为 MySQL 二进制日志文件名。此项为必填项,
否则
5 不能实现主从复制;如该项值为空,则以计算机名字加编号来命名二进制日志文件。
6 binlog_do_db=lingju。binlog_do_db 属性值为需要同步的数据库名(本例将主从同步
7 lingju 数据库)。如果需要同步另外的数据库,则重复设置 binlog_do_db。如果未设
置
8 binlog_do_db,则默认同步所有的数据库。
9 binlog_ignore_db=mysql。binlog_ignore_db 属性值为不需要同步的数据库名。
10
11 ‐‐ 2、重启主服务器数据库
12 停止 MySQL 服务的命令是“net stop mysql”
13 启动 MySQL 服务的命令是“net start mysql”
14 ‐‐ 3、在主服务器数据库添加用于同步的账号
15 为了实现主从复制,要求同步账户拥有 replication slave 权限
16 具体命令:
17 grant replication slave on *.* to shang@'192.168.6.87' identified by 'ab
c123';
18 (扩展‐‐‐授予账户所有的权限)
19 grant all privileges on *.* to shang@'192.168.6.87 ' identified by 'abc1
23'
20 with grant option;
21 ‐‐ 4、显示主服务器最新状态信息
22 执行“show master status;”命令,可以查看 master 数据库当前正在使用的二进制日
志
23 文件及当前执行二进制日志文件的位置。
24 其中 file 值为当前使用的二进制日志文件名,position 值为当前执行的二进制日志文
件  的位置。
(2)slave从服务器配置
1 ‐‐ 1、配置从服务器数据库配置文件
2 只需要配置从服务器数据库配置文件的 server_id 即可,需要注意的是该 server_id
的值
3 不能与主服务器数据库配置文件的 server_id 的值相同。
4 ‐‐ 2、停止从服务器的 slave 线程
5 使用命令“stop slave;”可以停止从服务器的 slave 线程。
6 ‐‐ 3、设置从服务器实现主从复制
7 change master to master_host='192.168.6.82',master_user='shang',
8 master_password='abc123', master_log_file='binary_log.000007',
9 master_log_pos=120;
10 这里的 master_log_file、master_log_pos 的值要与 master 主服务器的值一致,
11 否则将无法实现主从复制(同步)。
12 ‐‐ 4、开启从服务器的 slave 线程
13 使用命令“start slave;”可以启动从服务器的 slave 线程。
14 ‐‐ 5、显示从服务器最新状态信息
15 执行“show slave status \G;”命令,用于显示从服务器的最新状态信息。
16 ‐‐ 6、测试主从复制的正确性
17 在主服务器上执行一个更新操作(insert、update 和 delete),观察是否在从服务器
上
18 同步执行更新。
四、MySQL 查询优化
1.数据库查询优化介绍
(1)存在问题:
查询时间长、响应速度慢,甚至查询结果不够准确等现象。
(2)原因:
一是硬件设备(如CPU、磁盘)的存取速度跟不上,内存容量不够大;
另一个很重要的原因则是数据查询方法不适当,亦或没有进行数据查询优化。
(3)查询优化方法
查询优化有许多方法,按照优化的层次一般可以分为代数优化和物理优化。
代数优化是指关系代数表达式的优化,即按照一定的规则,改变代数表达式中操 作的次序和组合,使查询执行更高效;
物理优化则是指存取路径和底层操作算法的选择。选择的依据可以是基于规则 的,也可以是基于代价的,还可以是基于语义的。
2.基于索引的优化优化规则:
(1)前导模糊查询不能使用索引;
(2)union、in、or 都能够命中索引,建议使用 in;
(3)负向条件查询不能使用索引,可以优化为 in 查询;
(4)满足联合索引最左前缀原则;
(5)使用范围列查询可以使用索引;
(6)把计算放到业务层而不是数据库层;
(7)尽量避免强制类型转换,因为这将导致全表扫描;
(8)更新十分频繁、数据区分度不高的字段上不宜建立索引;
(9)被查询列要被所建的索引覆盖;
(10)如果有 order by、group by 的场景,请注意利用索引的有序性;
(11)业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一
索引;
(12)单索引字段数不允许超过 5 个。
注意:在使用索引字段作为条件时,如果该索引是组合索引,那么必须使用该 索引中的第一个字段作为条件,才能保证系统使用该索引,否则该索引将不会被 使用,并且应尽可能地让字段顺序与索引顺序一致。
3.where 子句优化
(1)避免在 where 子句中对字段进行 null 值判断
在 where 子句中对字段进行 null 值判断,这将导致数据库引擎放弃 使用索引而进行全表扫描,而全表扫描会耗费数据库资源,延长检索时间 可以设置默认值 0,这样可以确保表中没有 null 值
(2)避免在 where 子句中使用 != 或 <> 操作符
数据库引擎将放弃使用索引而进行全表扫描
(3)慎用 in 和 not in
会使系统无法使用索引,而只能直接搜索表中的数据。如果 in 范围内的值是连 续的,可以用“between... and”替换 in 如果必须使用 in,则应将 in 后面值的列表中可能出现最频繁的值放在最前面, 出现得最少的放在最后面,这样可以减少判断的次数
(4)避免在 where 子句中对字段进行表达式操作数据库引擎将放弃使用索引而进行全表扫描
(5)避免在 where 子句的“=”左边进行函数运算、算术运算或其他表达式运算
(6)尽量使用 exists
4.子查询性能优化
(1)尽量使用连接查询代替子查询 连接查询中 join 子句之所以更有效率一些,是因为被嵌套的内层子查询需在内存中创建临 时表,较为费时,而使用 join 子句则不需要创建临时表
(2)not in、not exists 子查询可以改用 left join 代替
(3)in、exists 子查询可以用 inner join 代替
如果子查询结果集没有重复记录,in、exists 子查询可以用 inner join 代替
(4)in 子查询用 exists 代替
(5)使用 left join 或 exists 判断是否存在记录
不要用含有 count(*) 的子查询判断是否存在记录,最好使用 left join 或 exists
(6)尽量避免嵌套(nest)子查询
查询嵌套层次越多,效率越低,因此应当尽量避免嵌套子查询
(7)过滤(filter)记录行
子查询中尽量过滤出尽可能多的记录行
5.其他 SQL 语句优化
(1)查询时按需取材
不要返回不需要的行、列,即避免“select * from 表”。
(2)避免或简化排序
应当避免或简化对大型表进行重复的排序。
(3)尽量在 group by 子句、having 子句之前剔除多余的行
(4)消除对大型表数据的顺序存取
在嵌套查询中,对表的顺序存取可能对查询效率产生致命的影响。
(5)尽量用 distinct(唯一),不要用 group by
如果 group by 的目的不包括计算,只是分组,那么使用 distinct 速度更快。
(6)避免困难的正规表达式
like 关键字支持通配符匹配,技术上称为正规表达式,但这种匹配特别耗费时间
(7)尽量使用存储过程
存储过程将数据的处理工作放在服务器上,减少了网络的开销
(8)尽量少用视图,特别是嵌套视图
由于对视图操作比直接对表操作慢,所以在执行逻辑复杂的查询时,可以考虑使用存储过程
来代替视图
(9)SQL 语句中的字段值要与数据类型精确匹配
【pprof】简要学习教程 基本介绍 pprof 是在做性能优化前的性能分析工具。 安装: go get -u github.com/google/pprof 分析工具 go tool pprof 是命令行指令,用于分析 Profiling 数据,源数据可以是 http 地址,也可以是已经 dump 下当 profile 文件;查看模式可以命令行交互模式,也可以是浏览器模式(-http 参数)。 两种应用 服务型应用 _ "net/http/pprof" 包,专用于采集 web 服务 运行数据的分析。即在运行的服务中通过 API . 阅读详情

相关推荐

VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法

1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..

Nemuel的博客 3万+

MySQL数据库的应用

数据库常见术语,数据库设计

weixin_49866355的博客 1412

STM32 移植LwIP 实现网线插拔自动恢复

STM32 移植LwIP 之后,能正常联网通讯,但是发现2个问题, 1、上电初始化前,未插入网线,之后就无法获取到IP地址(DHCP) 2、正常通讯过程中,拔掉网线,然后插回去,不知道如何复位 先看一下LWIP初始化代码 /** * LwIP initialization function */ int MX_LWIP_Init() { /* Initilialize the LwIP stack with RTOS */ tcpip_init( NULL, NULL );

tiantangmoke的博客 8074

MYSQL数据库应用详解

# 连接数据库 mysql -u"用户名" -p pwd # 数据库退出 quit # 查看数据库 show databases; SHOW databases; # 查看数据库版本 select version() # 显示时间 select now(); # 创建数据 create database `python01` charset="utf-8"; # 展示数据库创建语句 s...

weixin_43056654的博客 894

TVS 和压敏电阻联合使用进行浪涌保护时,压敏电阻的压敏电压要低于TVS 的钳位电压 VC。

通过先让MOV接管,可以确保在大多数情况下,电压不会迅速上升到TVS二极管的钳位电压,从而保护TVS二极管免受持续高能量冲击的损害。总结来说,将MOV的压敏电压设置得低于TVS二极管的钳位电压,可以提供一种分级的保护机制,优化浪涌保护性能,同时保护敏感的TVS二极管不被过度的能量冲击损坏,并延长其使用寿命。MOV吸收的能量(Wmov):假设浪涌电流为10kA,MOV导通后将电压限制在300V,那么Wmov = Ipp * Vmov = 10kA * 300V = 3MW。例如,Vmov可以设定为275V。

weixin_66642980的博客 2246

Ceph入门到精通-存储桶通知

这 通知还可以根据前缀的匹配项过滤掉事件,并且 (1) 键的后缀,(2) 附加到对象的元数据属性, 或 (3) 对象标签。在此模式下,操作仅在以下之后确认(确认) 通知将发送到主题的已配置终端节点。这意味着 通知的往返时间(发送 通知主题的终端节点以及接收 确认)被添加到操作本身的延迟中。要更新主题,请使用用于创建主题的相同命令(但在 更新时,使用现有主题的名称和不同的终端节点值)。端口:对于未加密的连接,默认为 5672,对于未加密的连接,默认为 5671 SSL 加密连接。(默认情况下,这是“假的”。

隔壁老瓦的专栏 1131

MySQL 使用方法简单教程

MySQL 使用方法简单教程

chinacodec的专栏 14万+

PD3.0详解 电源规则,全解!!!全解!!!

电源规则 大师匈今天谈一下PD3.0的电源规则,PD3.0标准标定的规则。 USB协议声称,为了世界和平世界环境,让大家用上统一标准的充电器,不用再为每一个用电设备都配一个专门的充电器,这些充电器各种各样的都有,所以有时候大师匈也很烦!!!那么为了维护世界和平,USB协议呢就制订了这个PD快充协议,还有它的规则,只要全世界都用PD,就解决了这个大问题。 在这里先了解一个关键字,PDP: Power Delivery Power PD电源的功率。 每个PD充电产品的功率要以0.5W的精度上报,比如大师匈做的P

大师匈的博客 1万+

数据库应用:MySQL数据库使用与管理

MySQL数据库语句在“mysql>”操作环境中执行。MySQLde 基本管理操作包括查看数据库结构、创建及删除库和表、管理表中的数据记录。

cronaldo91的博客 1171

82、yolov11检测模型迁移瑞芯微rk3588和使用昇腾设备300i DUO卡推理 batch=1/3,支持昇腾NMS迁移npu推理

本文介绍了使用昇腾设备进行分割推理的测试流程,包括两种测试方式(cann+onnx和om)。首先验证300iDUO卡的可用性,随后创建Docker镜像和容器以搭建独立环境。通过从指定仓库拉取Ubuntu 20.04镜像,创建容器并映射目录。进入容器后安装必要组件(Python3、GCC等)和系统工具(pciutils、net-tools等),为后续模型转换和迁移做准备。整个流程旨在构建可交付给第三方的标准化测试环境。

sxj731533730 1202

【滚雪球学数学建模】第1节·建模入门+三步法+案例

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 6412

python中web应用与mysql数据库交互

7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API。 7.1基于数据库的web应用 之前我们把日志数据存放在一个文本文件中,无法得知第六章最开始的请求:已经响应了多少个请求?最常用的字母列表是什么?请求来自哪个IP地址?哪个浏览器用的最多? 现使用mysql数据库存放日志数据: ...

weixin_30294021的博客 1743

SentEval学习笔记

SentEval allows you to evaluate your sentence embeddings as features for the followingdownstreamtasks: Task Type #train #test needs_train set_classifier MR movie review(影评) 11k 11k 1 1 CR product review(产品评述) ...

AlphaFinance 803

mysql数据库应用开发_应用程序开发-Azure Database for MySQL | Microsoft Docs

您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.Azure Database for MySQL 应用程序开发概述Application development overview for Azure Database for MySQL3/18/2020本文内容本文介绍开...

weixin_39787606的博客 160

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python入门(六)web应用与mysql数据库交互

7使用数据库 具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API。 7.1基于数据库的web应用 之前我们把日志数据存放在一个文本文件中,无法得知第六章最开始的请求:已经响应了多少个请求?最常用的字母列表是什么?请求来自哪个IP地址?哪个浏览器用的最多? 现使用mysql数据库存放日志数据: 安装mysql服务器。 为Python安装一个mysql数据库驱动程序。 为web应用创建数据库和表。 创建代码来处

i'mXiaoNiu 704

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python写web应用数据库_python中web应用与mysql数据库交互

7使用数据库具体使用python的DB-API,这一章里介绍如何编写代码与MYSQL数据库技术交互,这里使用一个通用的数据库API,名为DB-API。7.1基于数据库的web应用之前我们把日志数据存放在一个文本文件中,无法得知第六章最开始的请求:已经响应了多少个请求?最常用的字母列表是什么?请求来自哪个IP地址?哪个浏览器用的最多?现使用mysql数据库存放日志数据:安装mysql服务器。为Pyt...

weixin_39902608的博客 261

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

迁移应用数据库到MySQL Database on Azure

by Rong Yu 有用户问怎么把他们应用的数据库迁移到MySQL Database on Azure上,有哪些方式,有没有需要注意的地方。今天我们来概括介绍一下迁移应用数据库到MySQL Database on Azure的方式和需要考虑的事项。 应用的可迁移性 首先您可能会想您的应用是否可以顺利的运行在MySQL Database on Azure上。MySQL Database on

微软云计算:Microsoft Azure 中文博客(优快云镜像博客) 2850

MySQL与数据仓库:OLAP应用实践

1.背景介绍 1. 背景介绍 数据仓库是一种用于存储和管理大量历史数据的系统,用于支持决策支持系统。OLAP(Online Analytical Processing)是一种数据仓库查询和分析技术,用于支持多维数据查询和分析。MySQL是一种流行的关系型数据库管理系统,广泛应用于Web应用程序和数据仓库系统中。本文将介绍MySQL与数据仓库的关系,以及MySQL在OLAP应用中的实践。 2....

AI天才研究院 1051

ccmusic-database音乐流派分类Web应用:MySQL数据库设计与优化

本文介绍了如何在星图GPU平台自动化部署🎵音乐流派分类Web应用ccmusic-database/music_genre镜像,实现高效的音乐流派识别。该应用通过优化的MySQL数据库设计,能够快速处理用户上传的音频文件并返回分类结果,适用于音乐内容管理和智能推荐等场景。

weixin_35728286的博客 322
上一篇: 哈哈哈日记
下一篇: 数据定义和操作
Jarvis!
博客等级 码龄6年 822粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值