mysql失效了怎么办 mysql常见错误提示及解决方法

linux下安装了mysql,输入mysql命令无效是怎么回事?首先,连接工具的mysql就是个命令而已,如果你使用在线安装,如um install 或者ubuntu里面的apt install,系统会默认把mysql的连接工具放入/usr/bin下面去,如果你使用编译安装 , 那你需要手动把这个文件放入到bin目录里去 。
排查方法 , 找到mysql这个文件,直接拷贝到/usr/bin下面即可,,即使你要alias,那你后面的命令也是必须要有效的 , 无效肯定是要报错的;如果你要使用ln软连接方式也是可以的 , 但是同样后面的路劲要对咯 。
【mysql失效了怎么办 mysql常见错误提示及解决方法】最后,还不行你就直接在线yim或者apt安装就行了 。不用担心连接工具跑到哪里去了 。
MySQL的事物怎么失效了MYSQL事务处理失效原因
最近项目中使用mysql数据库时出现一个问题,运用spring的事务注解(@transaction)来管理事务时 , 发现用事务注解@transaction标记的方法里,如果出现异常,事务并没有回滚,而是直接提交到了数据库,刚开始还以为是spring的事务配置有问题,检查一遍后还是不行 , 最后查阅了很多资料才发现原来是mysql数据库存储引擎的问题 。
mysql有多种存储引擎,有些版本(mysql5.5.5以前默认是MyISAM,mysql5.5.5以后默认是InnoDB)安装时默认的存储引擎是MyISAM,而MyISAM存储引擎是不支持事务处理的,所以才导致了项目中service层的某个方法事务失效,解决的方法就是将需要事务管理的表的存储引擎改为InnoDB,下面将详细说明mysql的几种存储引擎以及如何修改存储引擎:
一、查看mysql数据库所支持的存储引擎
show ENGINES;
该语句将列出该版本的mysql所支持的所有存储引擎,并且可看到默认的存储引擎为InnoDB(这个是我修改之后的,刚安装mysql完默认的是MyISAM),也可以使用下面语句来查看mysql默认的存储引擎:
SHOW VARIABLES LIKE 'storage_engine';
二、MyISAM存储引擎
MyISAM基于ISAM存储引擎 , 并对其进行扩展 。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一 。MyISAM拥有较高的插入、查询速度,但不支持事务 。MyISAM主要特性有:
1、大文件(达到63位文件长度)在支持大文件的文件系统和操作系统上被支持
2、当把删除和更新及插入操作混合使用的时候,动态尺寸的行产生更少碎片 。这要通过合并相邻被删除的块,以及若下一个块被删除,就扩展到下一块自动完成
3、每个MyISAM表最大索引数是64,这可以通过重新编译来改变 。每个索引最大的列数是16
4、最大的键长度是1000字节 , 这也可以通过编译来改变,对于键长度超过250字节的情况,一个超过1024字节的键将被用上
5、BLOB和TEXT列可以被索引
6、NULL被允许在索引的列中,这个值占每个键的0~1个字节
7、所有数字键值以高字节优先被存储以允许一个更高的索引压缩
8、每个MyISAM类型的表都有一个AUTO_INCREMENT的内部列,当INSERT和UPDATE操作的时候该列被更新,同时AUTO_INCREMENT列将被刷新 。所以说,MyISAM类 型表的AUTO_INCREMENT列更新比InnoDB类型的AUTO_INCREMENT更快
9、可以把数据文件和索引文件放在不同目录
10、每个字符列可以有不同的字符集
11、有VARCHAR的表可以固定或动态记录长度
12、VARCHAR和CHAR列可以多达64KB
使用MyISAM引擎创建数据库,将产生3个文件 。文件的名字以表名字开始,扩展名之处文件类型:frm文件存储表定义、数据文件的扩展名为.MYD(MYData)、索引文件的扩展名时.MYI(MYIndex)
三、InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎 。InnoDB主要特性有:
1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎 。InnoDB锁定在行级并且也在SELECT语句中提供一个类似Oracle的非锁定读 。这些功能增加了多用户部署和性能 。在SQL查询中 , 可以自由地将InnoDB类型的表和其他MySQL的表类型混合起来,甚至在同一个查询中也可以混合
2、InnoDB是为处理巨大数据量的最大性能设计 。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的
3、InnoDB存储引擎完全与MySQL服务器整合 , InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池 。InnoDB将它的表和索引在一个逻辑表空间中,表空间可以包含数个文件(或原始磁盘文件) 。这与MyISAM表不同,比如在MyISAM表中每个表被存放在分离的文件中 。InnoDB表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上
4、InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键
5、InnoDB被用在众多需要高性能的大型数据库站点上
InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件
四、MEMORY存储引擎
MEMORY存储引擎将表中的数据存储到内存中,未查询和引用其他表数据提供快速访问 。MEMORY主要特性有:
1、MEMORY表的每个表可以有多达32个索引 , 每个索引16列,以及500字节的最大键长度
2、MEMORY存储引擎执行HASH和BTREE缩影
3、可以在一个MEMORY表中有非唯一键值
4、MEMORY表使用一个固定的记录长度格式
5、MEMORY不支持BLOB或TEXT列
6、MEMORY支持AUTO_INCREMENT列和对可包含NULL值的列的索引
7、MEMORY表在所由客户端之间共享(就像其他任何非TEMPORARY表)
8、MEMORY表内存被存储在内存中,内存是MEMORY表和服务器在查询处理时的空闲中,创建的内部表共享
9、当不再需要MEMORY表的内容时,要释放被MEMORY表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表(使用DROP TABLE)
五、存储引擎的选择
不同的存储引擎都有各自的特点 , 以适应不同的需求 , 如下表所示:
功能MYISAMMemoryInnoDBArchive
存储限制256TBRAM64TBNone
支持事物NoNoYesNo
支持全文索引YesNoNoNo
支持数索引YesYesYesNo
支持哈希索引NoYesNoNo
支持数据缓存NoN/AYesNo
支持外键NoNoYesNo
如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力 , 并要求实现并发控制,InnoDB是一个好的选择
如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率
如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果
如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的 。Archive非常适合存储归档数据,如记录日志信息可以使用Archive
使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能
六、修改存储引擎
1、修改mysql默认存储引擎为InnoDB
关闭mysql服务: net stop mysql
找到mysql安装目录下的my.ini文件:
找到default-storage-engine=MYISAM 改为default-storage-engine=INNODB
找到skip-innodb 改为#skip-innodb,即注释掉该行 , skip-innodb为忽略InnoDB的意思 , 此处需要开启InnoDB,故需要把它注释
启动mysql服务:net start mysql
2、查看表使用的存储引擎
show table status from db_name where name='table_name';
3、修改表的存储引擎
alter table table_name engine=innodb;
怎么恢复mysql数据库怎么恢复数据简单情况下:进入原来mysql安装路径下的data文件夹下 , 找到相应的库和ibdata1,进行copy,就可回复原来的数据 。
复杂情况下:
从另一台机上把MySQL数据库的mysql文件夹拷贝到本地机上,目的是恢复本地机对数据的访问和操作 。经过如下几种情况的操作 。
1. 在本地重装MySQL(安装目录D:\Program Files\MySQL\MySQL Server 5.0),直接把mysql文件夹拷贝至D:\Program Files\MySQL\MySQL Server 5.0\ 。结果,失败:数据库连接错误 。
2. 卸载后重装MySQL,将D:\Program Files\MySQL\MySQL Server 5.0\下的数据备份,只把mysql\data文件夹全部内容拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data下 。结果,失败:数据库连接错误 。将备份的数据还完覆盖 。结果,失败,还是连接不上数据库 。
3. 卸载后重装MySQL,将mysql\data文件夹里的cf1,last文件夹(这两个是原来MySQL里的数据库)拷贝进D:\Program Files\MySQL\MySQL Server 5.0\data 。连接成功,在Navicat for MySQL里看到数据库cf1和last,但是不能访问 , 因为数据全为零 。明白了原来data里以数据库命名的文件存储的是数据库的表结构,不是元数据 。下一步,把data文件夹里的ibdata1文件(3.4G大,明显存储了元数据)拷贝到D:\Program Files\MySQL\MySQL Server 5.0\data里,代替原来的ibdata1文件 。重启电脑 , 打开Navicat for MySQL,连接成功,数据可以访问操作 。
至此,操作终于成功 。其实当初在那台机上把数据导出来,而不是现在直接把文件夹mysql复制过来会更容易恢复 。但那台机已经重装了系统,也就是说MySQL失效了 。
mysql过期了需要注册因为mysqlmysql失效了怎么办的用户密码一般一年就会过期一次 。mysql的用户密码一般一年就会过期一次mysql失效了怎么办,如果记得这个规律mysql失效了怎么办,定期打开mysql表,mysql库----user表---password_last_changed,将此项的当时日期改成当天前两天的日期,每间隔几个月记得进来修改一下,就永远不会遭遇密码过期问题无法登录的bug烦恼 。
mysql 索引失效总结 首先我们还是先把表结构说下:用户表tb_user结构如下:
1、 不要在索引列上进行运算操作, 索引将失效 。
手机号phone字段有唯一索引,当根据phone字段进行函数运算操作之后 , 索引失效:
2、 字符串类型字段使用时,不加引号,索引将失效 。
如果字符串不加单引号,对于查询结果,没什么影响,但是数 据库存在隐式类型转换,索引将失效 。
3、 如果仅仅是尾部模糊匹配,索引不会失效 。如果是头部模糊匹配,索引失效 。
接下来,我们来看一下这三条SQL语句的执行效果,查看一下其执行计划:
由于下面查询语句中 , 都是根据profession(专业)字段查询,profession字段是一个普通的索引, 我们主要看一下,模糊查询时,%加在关键字之前,和加在关键字之后的影响 。
经过上述的测试,我们发现,在like模糊查询中,在关键字后面加%,索引可以生效 。而如果在关键字 前面加了% , 索引将会失效 。
4、 用or分割开的条件, 如果or前的条件中的列有索引,而后面的列中没有索引 , 那么涉及的索引都不会 被用到 。
由于age没有索引,所以即使id有索引 , 索引也会失效 。所以需要针对于age也要建立索引 。
5、 数据分布影响:如果MySQL评估使用索引比全表更慢,则不使用索引 。
关于mysql失效了怎么办和mysql常见错误提示及解决方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读