mysql
多动手,勤思考
阿布
展开
-
Spring的嵌套事务(Propagation.NESTED)到底是个啥
SavePoint是数据库事务中的一个概念, 可以将整个事务切割为不同的小事务, 可以选择将状态回滚到某个小事务发生时的样子。Propagation.NESTED 则是外部事务的子事务, 如果外部事务 commit, 嵌套事务也会被 commit, 这个规则同样适用于rollback.嵌套事务开始执行时, 它将取得一个 savepoint, 如果这个嵌套事务失败, 我们将回滚到此 savepoint,嵌套事务是外部事务的一部分, 只有外部事务结束后它才会被提交.原创 2023-01-06 18:13:17 · 4228 阅读 · 2 评论 -
MySQL事务的SavePoint
SavePoint是数据库事务中的一个概念, 可以将整个事务切割为不同的小事务, 可以选择将状态回滚到某个小事务发生时的样子,原创 2023-01-06 15:59:07 · 206 阅读 · 0 评论 -
mysql设置允许账号远程登录
1. 登录mysqlmysql -uroot -p (随后输出密码)2. 设置允许远程访问GRANT ALL PRIVILEGES ON *.* TO '账号'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;例如GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mysql' WITH GRANT OPTION;3. 刷新权限FLUSH PRIVILEGES;...原创 2021-07-26 22:20:11 · 1373 阅读 · 0 评论 -
Mac M1 docker 安装 mysql 出错
使用官方提供的mysql/mysql-server:5.7 镜像就好了,支持ARMdocker pullmysql/mysql-server:5.7原创 2021-07-26 10:28:51 · 769 阅读 · 2 评论 -
MySQL latin1 编码 转 utf-8 格式
Mysql 的 latin1 不等于标准的 latin1(iso-8859-1) 和cp1252,比iso-8859-1多了0x80-0x9f 字符,比cp1252多了0x81,0x8d,0x8f,0x90,0x9d 一共5个字符。官方文档有说明:http://dev.mysql.com/doc/refman/5.0/en/charset-we-sets.html这样在Java中,如果使用标准的iso-8859-1或者cp1252解码可能出现乱码。s.getBytes(“iso-8859-1”) 或原创 2021-02-19 12:15:11 · 605 阅读 · 0 评论 -
MySQL Java JDBC Insert 时间相差14个小时
首先细节可以看这篇文章:https://www.imooc.com/article/280264大致原因就是因为CST时区的问题,其他文章都希望更改 time_zone 配置,但是有的时候线上的数据库或者测试数据库没有办法直接修改,所以在jdbc连接字符串上加上 &serverTimezone=GMT%2B8 即可,表示是中国时区, &serverTimezone=Asia/Shanghai 也行...原创 2021-02-05 18:01:31 · 185 阅读 · 0 评论 -
MyBatis插件TKMapper主键回显
@Id @GeneratedValue(generator = "JDBC") protected Long id;如此设置insert后主键将回显。原创 2020-12-22 13:12:56 · 352 阅读 · 0 评论 -
MySQL创建一个仅对某个数据库有权限的账号
GRANT ALL PRIVILEGES ON 数据库名称.* TO '账号名称'@'%' IDENTIFIED BY '账号密码' WITH GRANT OPTION原创 2020-12-19 19:56:47 · 651 阅读 · 1 评论 -
MySQL内容不区分大小写?
场景数据库存储的varchar类型字符串查询时不区分大小写。简而言之: 通过 show variables like 'lower_case_table_names' 查看值, 0代表严格区分, 1代表不区分,通过修改mysql的配置my.cnf文件更改然后重启,即可达到预期的效果。1、mysql默认情况下bai是否区分大小写,使用dushow Variables like '%table_names’查看lower_case_table_names的值,0代表区分,1代表不区分。2、zhim原创 2020-11-23 12:27:33 · 10066 阅读 · 0 评论 -
MySQL Update更新数据时,数据超过varchar长度却不报错,自动截取
场景开发环境中进行更新数据库中的数据时,偶然发现数据超过varchar的长度,数据库没有报错,而是自动进行了数据截取并保存了.原因经过确认,是因为sql_mode的设置导致的,select @@SESSION.sql_mode因为没有设置严格模式,所以更新成功.设置为严格模式:SET SESSION sql_mode = 'STRICT_TRANS_TABLES';直接更新失败.ANSI 如果不设置模式,默认就是这个ANSI模式:宽松模式,对插入数据进行校验,如果不符合定义类型原创 2020-11-18 17:25:50 · 2652 阅读 · 0 评论 -
MySQL异常 The table ‘xxxxx‘ is full
The table ‘xxxxx’ is full2020-08-10T06:37:24.297548Z 1189 [ERROR] InnoDB: posix_fallocate(): Failed to preallocate data for file ./xxxxx/xxxxx.ibd, desired size 16384 bytes. Operating system error number 28. Check that the disk is not full or a disk quota原创 2020-08-10 17:07:51 · 1223 阅读 · 0 评论 -
MySQL的SQL_MODE模式
SQL_MODE值的含义值解释ONLY_FULL_GROUP_BY对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么将认为这个SQL是不合法的,因为列不在GROUP BY从句中STRICT_TRANS_TABLES在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做任何限制NO_ZERO_IN_DATE在严格模式,不接受月或日部分为0的日期。如果使用IGNORE选项,我们为类似的日期插入’0000-00原创 2020-08-10 09:22:51 · 168 阅读 · 0 评论 -
MySQL函数和存储过程权限问题
CREATE DEFINER=`root`@`%` FUNCTIONsql security创建函数或者存储过程的时候, sql secuirty的值决定了调用存储过程的方式,取值 :definer或者invoker 。definer:在执行存储过程前验证definer对应的用户如:root@192.168.2.%是否存在,以及是否具有执行存储过程的权限,若没有则报错。invoker:在执行存储过程时判断inovker即调用该存储过程的用户是否有相应权限,若没有则报错。修改语法: alt..原创 2020-08-10 09:04:58 · 871 阅读 · 0 评论 -
MySQL函数权限问题导致的SQL执行失败问题 Incorrect string value
今日帮助测试部署环境的时候,发现SQL执行总是出错~第一次排查的时候 确实是因为数据库编码没改出现的错误。但是编码改掉以后,依然出现下面的错误:Cause: java.sql.SQLException: Incorrect string value: '\xE7\xAE\xA1\xE7\x90\x86...' for column 'codeDesc' at row 57; uncategorized SQLException; SQL state [HY000]; error code [1366原创 2020-08-07 18:46:51 · 1239 阅读 · 0 评论 -
CentOS7 使用 YUM 安装 MySQL5.7
卸载之前的MySQL(没安装的跳过) 1. pkill -9 mysqld # 停止MySQL 2. rpm -qa | grep -i mysql # 列出现有的MySQL安装包 3. yum -y remove 包名 # 使用这个命令删除列出来的包名 4. rpm -ev 包名 # 如果yum删除不了,就用这个命令删下载MySQL源并设置国内清华大学的源 1. wget http://repo.mysql.com/mysql57-community-relea..原创 2020-05-29 18:48:18 · 249 阅读 · 0 评论 -
SQL索引失效之隐式转换
假设列上有索引:varchar column = int value (左边的varchar列会被转变成int,此时不走索引)int column = varchar value (右边varchar的值会被转变成int, 走索引)int 优先级比较高,查询条件中如果有int,另一方会被转换成int,所以查询语句里都带上 ‘引号’ 就可以避免这种问题官网:https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html...原创 2020-05-29 09:20:30 · 566 阅读 · 0 评论 -
SQL执行顺序
1.首先执行FROM语句,形成笛卡尔乘积,产生虚拟表 vt12.然后在vt1的基础上执行ON语句,过滤掉右表不符合ON条件的,得到vt23. 执行JOIN语句,比如LEFT JOIN就保留所有左边的4. 执行WHERE语句,继续过滤5. 执行GROUP BY 分组6. 执行 HAVING 对分组结果过滤7. 执行SELECT 现在才选出要的列8. 执行ORDER BY9. 执行LIMIT...原创 2020-05-20 10:22:17 · 159 阅读 · 1 评论 -
MySQL读写分离导致insert后select不到数据
MySQL设置独写分离,在代码中按照如下写法,可能会出现问题// 先录入this.insert(obj); // 再查询Object res = this.selectById(obj.getId());res: null;线上的一个坑,做了读写分离以后,有一个场景因为想方法复用,只传入一个ID就好,直接去库里查出一个对象再做后续处理,结果查不出来,事务隔离级别各种也都排查了,最后发现是读写分离的问题,所以换个思路去实现吧。...原创 2020-05-14 09:35:06 · 1043 阅读 · 0 评论 -
MySQL导入其他服务器过来的数据出现 函数等功能出现 1105 ER_UNKNOWN_ERROR
将箭头所指的三张表引擎改为 MyISAM 即可。原创 2020-05-13 16:39:37 · 1727 阅读 · 1 评论 -
mysql json格式数据查询
预设表名是 base_data , json列名是 json_valuejson_value的值是 {“ids”:[“a”,“b”],“datas”:[{“name”:“张三”}]}那么查询语句应该是 select * from base_data where JSON_CONTAINS(json_value -> "$.ids", JSON_ARRAY('a')); ...原创 2019-09-26 11:28:58 · 427 阅读 · 0 评论