前段时间不知为何,脑子一热把数据库升级成了8.0版本,但无奈服务器内存太小承受不来,于是打算再降回5.7。本以为会花费很久时间,尝试之后发现仅用了一两个小时就搞定了,时间主要用在对数据的处理环节。对于数据库的安装、卸载本身不做详述,主要详细说明一下数据的处理、转移过程。第一步:数据备份有宝塔面板的,可以直接使用面板的批量备份功能:没有宝塔面板,用命令行备份成SQL格式的文件即可。mysqldump -u 用户名 -p 数据库名 > 文件名.sql 第二步:数据处理首次检索首先检索了一下网上给出的解决方案,大概是说:需要将8.0中专属的内容替换为5.7中的内容,包括: utf8mb4_0900_ai_ci 替换为 utf8_general_ci utf8_croatian_ci替换为 utf8_general_ci utf8mb4_general_ci替换为utf8_general_ci utf8mb4 替换为 utf8 甚至有人为了方便,用下面的语句直接删掉了 AUTO_INCREMENT= 后面的内容:sed 's/AUTO_INCREMENT=[0-9]*\b
在一个网页中,[[前端]]与[[数据库]]都设置了相同的长度限制。但在实际填写表单时,当我输入了大量回车符时,数据库往往会报错而前端不会拦截。因此判断是字符超长导致的错误。分析过程研究了一下回车符在java前端和数据库各自所占的长度:先确认数据库和页面的编码都是utf-8类型。首先,我在viewNotice字段中输入“一二三四五六七八”这几个字符,此时在网页控制台里输入:document.getElementsByName('viewNotice')[0].value.length 得到的值为8。再进入数据库,输入以下查询语句SELECT length( VIEW_NOTICE ) AS '字符串(字节)长度', CHARACTER_LENGTH( VIEW_NOTICE ) AS '字符长度' FROM `VR_LABORATORY_INFO` WHERE id = XXX 可以看到其字符长度也是8。此时前端和数据库的字符长度都是一致的。然后再往字符中加入一个回车,再重复执行上述两个命令,得到的结果分别是9(前端)和10(数据库)。结论 在前端中,一个回车符会被视为1个字
一、描述: Mysql中的FOREIGN_KEY_CHECKS是用来启动和关闭外键约束的方法。二、错误: 在MySQL中删除一张表、一条数据,或者修改外键关系的时候,提示以下错误:[Err] 1451 -Cannot delete or update a parent row: a foreign key constraint fails (...)三、原因: 这是因为MySQL中设置了foreign key关联,造成无法更新或删除数据。四、解决方法: 可以通过设置FOREIGN_KEY_CHECKS避免这种情况。 执行SET FOREIGN_KEY_CHECKS=0;禁用外键约束。删除数据后可以在开启外键约束:SET FOREIGN_KEY_CHECKS=1;比如:SET FOREIGN_KEY_CHECKS = 0; -- 执行SQL语句 xxxx SET FOREIGN_KEY_CHECKS = 1;五、相关命令 查看当前FOREIGN_KEY_CHECKS的值可用如下命令:SELECT @@FOREIGN_KEY_CHECKS;文章转
肥牛说:今天在写select语句查询时,使用了left join语句,但查询出的结果条数总是少很多,和实际情况出入极大。最开始以为是left join用错了,后来仔细对比了left join、right join、inner join、outer join(如下图),还是需要使用left join,经过再三的研究、查找,终于发现了作者的这篇“宝藏”文章,因为错误的使用了on/where这两个条件过滤词,才导致了查询结果的偏差。非常感谢作者simple van的帮助!特此留存备用。本文转自csdn,作者为simple van原文链接https://blog.csdn.net/qq_23586923/article/details/109610313现象left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论、商城里一个货物有多少评论、一条评论有多少个赞等等。但是由于对join、on、where等关键字的不熟悉,有时候会导致查询结果与预期不符,所以今天我就来总结一下,一起避坑。这里我先给出一个场景,并抛出两个问题,如果你都能答对那这篇文章就不用看了。假
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select id from t where num=10union allselect id from t where num=205.in 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3)对于连续的数值,能用
肥牛
半路出家的产品圈怪蜀黍