前段时间不知为何,脑子一热把数据库升级成了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;文章转
肥牛
半路出家的产品圈怪蜀黍