, port=srvconf.mysql_port, user=srvconf.mysql_user, password=srvconf.mysql_password,...操作 涉及到数据库话题就很大了,在本文中,只讲简单的操作,不涉及高级用法,具体见aiomysql的文档。...字典的Key为数据库字段,值为数据值。...get值 async with app.redis_pool.get() as redis: response = await redis.get(key) set值,并设置timeout async...with app.redis_pool.get() as redis: await redis.setex(key, timeout, response_cached) 还有一些其它的高级用法
alter add命令用来增加表的字段。...,字段名2 …]); 例子: mysql> alter table employee add index emp_name (name); 2) 加主关键字的索引 mysql> alter...table 表名 add primary key (字段名); 例子: mysql> alter table employee add primary key(id); 3) 加唯一限制条件的索引...mysql> alter table 表名 add unique 索引名 (字段名); 例子: mysql> alter table employee add unique emp_name2(...index emp_name; 5) 增加字段 mysql> ALTER TABLE table_name ADD field_name field_type; 6) 修改原字段名称及类型
Caused by: java.sql.SQLException: Cannot add foreign key constraint 查看DATABASECHANGELOG 日志 使用h2数据库时...,liquibase是能够正确创建表和外键以及索引,但是换到mysql的时候,无法成功创建外键。...手动执行sql语句 ALTER TABLE datasync_monitor.table_monitor_strategy ADD CONSTRAINT fk_account_table FOREIGN KEY...constraint 既然liquibase能够在h2上成功创建表以及外键,但是在mysql上创建不了,而且表存在手动也不能添加外键,估计就是mysql的原因了。...这个问题可能是mysql特有的,在h2上依然能够成功创建外键。
增加 INSERT 添加一条记录 INSERT INTO (字段1, 字段2, ...)...没有列出id字段,因为id字段是一个自增主键,由数据库自己推算 如果一个字段有默认值,那么在INSERT语句中可以不出现 字段顺序随意,前后两个()内一一对应即可,如 INSERT INTO...解题: 自连接比对 # Write your MySQL query statement below DELETE p1 FROM Person p1, Person p2 WHERE p1.Email...解题: case when then ELSE # Write your MySQL query statement...query statement below update salary set sex = IF(sex = 'm', 'f', 'm') or 异或 # Write your MySQL query
1. Could our database support multi-database under one single instance? 2. Could...
DUPLICATE KEY UPDATE batch执行时出死锁错误 背景知识 一、 mysql insert 与 duplicate key: 典型的插入语句: 多条:INSERT INTO tablename...'PRIMARY' 如果数据库中已有某条数据,以下的两条语句可等同: INSERT INTO tablename (id, data) VALUES (1, 10) ON DUPLICATE KEY...UPDATE data=data+10; UPDATE tablename SET data=data+10 WHERE id=1; duplicate key语句一般应用在 格式化多条更新语句: INSERT...貌似mysql有这个bug(http://bugs.mysql.com/bug.php?...id=52020) 使用threadlocal去获取操作数据库的对象,static对象,获取pool的连接并执行批处理方法 PRIMARY KEY UNIQUE KEY 的区别
mysql8以上版本默认使用 sha256_password 认证 密码在传输过程中必须加密保护,如果无法使用 TLS,就需要使用 RSA 公钥加密 可以在连接字符串中通过 ServerRSAPublicKeyFile
查询:INSERT INTO member_test(mem_no,flag)VALUE('111','1') 错误代码: 1062 Duplicate entry '111' for key '...uk_mem_no' 1.创建数据库表演示 CREATE TABLE `member_test` ( `id` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,...ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_delete` TINYINT(1) NOT NULL DEFAULT '0', PRIMARY KEY...(`id`), UNIQUE KEY `uk_mem_no` (`mem_no`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4...flag = flag - 1; ##无主键冲突新增 影响行数1 INSERT INTO member_test(mem_no,flag)VALUE('222','1') ON DUPLICATE KEY
ON DUPLICATE KEY UPDATE是MySQL insert的一种扩展。...ON DUPLICATE KEY UPDATE执行成功时,AUTO_INCREMENT都会自增加1. 不管是否有数据变更,AUTO_INCREMENT都会自增加1。...; 返回: Query OK, 2 rows affected (0.04 sec) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 而此时数据库里仍然只有...ON DUPLICATE KEY UPDATE执行成功时,AUTO_INCREMENT都会自增加1。 这个很关键,切记。...引用资料 https://mariadb.com/kb/en/library/insert-on-duplicate-key-update/ https://dev.mysql.com/doc/refman
mysql Specified key was too long; max key length is 767 bytes 查询:ALTER TABLE `order_test_code` MODIFY...https://help.aliyun.com/document_detail/211557.html 在DMS中为MySQL建立索引时出现“Specified key was too long; max...key length is 767 bytes”报错 问题原因 以MySQL的varchar、char等字符串类型字段作为索引时,单个索引字段存储长度超过了767字节。...解决方法 请根据实际情况选择对应的解决方法: 启用innodb_large_prefix参数 如果您使用的是云数据库RDS,可以在RDS控制台中将innodb_large_prefix参数修改为ON 减小字段存储长度...请根据实际情况将字段存储长度设置为正常的长度: 以InnoDB为引擎的MySQL建立索引时,单个最大索引字段存储长度为767。
05/16 * 修正 inputYN 多次回车,导致参数丢失问题 * 修正 部分描述信息,调整格式等 * 增加 “批量删除 key,支持正则表达式” 方法 * Version 0.0.1 2020.../04/26 * 创建 Redis 集群情况查询、key 查询、key 删除等功能脚本 选项 1sh ${SCRIPT_NAME} [options] ... 2 3 -...删除指定 key,不支持正则表达式,原因:redis 的 del 命令不支持正则表达式 10 -b, --bdel= 批量删除 key,支持正则表达式...17# Version 0.0.2 2020/05/16 18# 修正 inputYN 多次回车,导致参数丢失问题 19# 修正 部分描述信息,调整格式等 20# 增加...“批量删除 key,支持正则表达式” 方法 21# 22# Version 0.0.1 2020/04/26 23# 创建 Redis 集群情况查询、key 查询、key 删除等功能脚本
主键 每张表中只能有一个主键 主键自动回not null 主键的设置方式是创建的时候加上:primary key 一般主键设置为自动增加,auto_increment, 设置值的时候,可以不人为设置;...如果不是自动增加,那么每次添加数据的时候,必须自己写,而且要保证唯一性; 例如: create table test4 ( id int primary key auto_increment..., user_name varchar(20) ); unique key 也是唯一约束,但是可以存在一个空值; 主键的也是唯一约束,但是一张表中只能有一个; unique key...可以有多个; 最后设置默认值 Default 创建表的时候,设置默认值; 例如 create table test5 ( id int primary key auto_increment
向服务器中导入本地 MySQL 数据库,遇到错误:1071 -Specified key was too long; max key length is 767 bytes。...这个错误的原因是索引长度超过了 MySQL 默认的 767 个字节如果是创建索引时遇到该问题,那么按照上文中介绍的方法修改字段长度就可以了。...mysql> set global innodb_large_prefix=1;
来源:keakon的涂鸦馆 , www.keakon.net/2018/07/13/key%20/%20value%20数据库的选型 引言 一直以来在我的观念中,key/value 数据库就三种选项:...我一想 TiKV 和 Pika 等很多 key/value 数据库都选用了 RocksDB,应该是比较靠谱的,于是就选它了。 接着就发现这东西的编译依赖有点多。...RocksDB 还提供了一个 Column Family 的功能,设计上就和 MySQL 的分表差不多,就是人为地将数据分散到多个 Column Families 中(例如按 key 的首字节或 hash...而且因为 key 单独存放,所以遍历 key 和测试 key 是否存在也会快很多。不过如果 value 长度很小,那么分开存放反而增加了一次随机读,这是要结合实际项目来考虑的。...虽然空间占用比 RocksDB 要高一些(大概 10%),但是打开数据库的速度却要快几倍,也许是只需要加载 key 的原因。
TYPE(3)—mysql执行计划(四十九) possible keys & key possible keys代表可能用到的索引,key代表,mysql优化器成本计算后,实际会用到的索引key, 所以...mysql> EXPLAIN SELECT * FROM s1 WHERE key1 > 'z' AND key3 = 'a'; +----+-------------+-------+--------...对于可变长的索引来说: mysql> EXPLAIN SELECT * FROM s1 WHERE key1 = 'a'; +----+-------------+-------+-----------...--+------+------+----------+-----------------------+ 2 rows in set, 1 warning (0.00 sec) 而这里可以看到前面的是数据库加...接下来我们 看连接查询 mysql> EXPLAIN SELECT * FROM s1 INNER JOIN s2 ON s1.key1 = s2.key1 WHERE s1.common_field
1.简介 Redis是完全开源的ANSI C语言编写、遵守BSD协议,高性能的key-value数据库。...) 增:SET keyname redis ---key后面跟key的名称和key的值 删:del keyname 改:EXPIRE yhkey 60 ---修改key的过期时间、EXPIRE...以秒计算、 PEXPIRE 以毫秒计算 ttl myname -----修改key永不过期 rename key yhkey9 查:keys * 查询所有key...keys yh* 过滤出包含yh的key exists keyname 判断key是否存在 pttl mekey查找key的剩余时间 5.3Redis-String 增:...统计参数:INFO 重置 INFO 命令中的某些统计数据:config resetstat 键数:dbsize 删除所有key:flushall 删除当前数据库key:flushdb 异步保存数据到硬盘
DEFAULT '' COMMENT '名称', `is_update` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否修改 0否 1是', PRIMARY KEY...(`id`), UNIQUE KEY `uq_name` (`name`), UNIQUE KEY `uk_business_id` (`business_id`) USING BTREE )...执行sql insert into admin(business_id) values (12345) on duplicate key update is_update = 1; 3....由此分析出 unique key的异常级别高于duplicate key的重复判断。执行过程是先确保insert语句可执行,之后再判断duplicate key。...解决办法 在执行insert duplicate key语句的时候,尽量使用主键作为判断,主键的重复判断优先级比其他字段的unique key优先级高,所以在执行插入重复的时候能正常触发update。
一、前言 在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库;如果数据库已经存在同一主键的记录,则执行update操作,如果不存在,则执行insert操作; 这个操作可以在业务层做,...数据库层mysql中INSERT ... ON DUPLICATE KEY UPDATE就可以做这个事情,并且是原子性操作 二、INSERT ......ON DUPLICATE KEY UPDATE命令 2.1单条记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE...如果不存在则插入a=1,b=2,c=3到数据库,然后返回值为1。...2.2多记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);
逻辑上我们需要怎么写: $result = mysql_query('select * from xxx where id = 1'); $row = mysql_fetch_assoc($result...); if($row){ mysql_query('update ...'); }else{ mysql_query('insert ...'); } 但是这样写有两个问题?...1、效率太差,每次执行都要执行2个sql 2、高并发的情况下数据会出问题,不能保证原子性 ON DUPLICATE KEY UPDATE 可以达到以下目的: 向数据库中插入一条记录:若该数据的主键值/...UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。...= '('.implode(',',array_values($key))
背景 数据入库这块有离线和实时两套入库系统,写同一个db的同一批mysql表,两边用的都是insert into table on duplicate key update这种方式。...原因分析&解决方案 这里面分两种情况,一种是带主键的insert duplicate key update,一种是没有主键带唯一索引的insert duplicate key update。...如果插入的索引已经存在,会在索引值位置插入next-key锁。next-key锁包含record锁和gap锁,gap锁会锁一个范围,锁住期间,其他事务不能向该范围插入数据。...如果此时两个事务各自获取到了一个next-key锁,此时都需要向对方获取到的next-key锁范围插入数据,就会出现死锁。 举例: code字段有唯一索引。...如果插入数据时带上主键,那么就不会产生next-key锁,会退化到第一种情况(带主键的insert duplicate key update)。
领取专属 10元无门槛券
手把手带您无忧上云