最近,我们有些功能需要使用到基于多个字段的分区,需要同时支持oracle/mysql,但是开发人员又希望尽可能少的改动业务代码,也不愿意使用多列分区,在oracle 11g之前,不支持多列分区(12.2支持,主要是怕客户环境不支持),但是支持基于虚拟列的分区,mariadb支持多列分区,看官方文档,Mariadb也支持基于虚拟列的分区,但是开发反应报了“ERROR 1526 (HY000): Table has no partition for value xxx”,特地本机测试了下,支持的,那…
MySQL数据库插入数据出现ERROR 1526 (HY000): Table has no partition for value xxx工作的时候发现无法插入数据,报错:ERROR 1526 (HY000): Table has no partition for value xxx 根据字面意思可以猜测大概是值已经超出了分区的范围,查询表结构发现此表创建了分区,并且设定了规则是按照ID范围存储数据,当插入的数据最后的分区ID值要大时,报错.解决方法可以直接添加分区即可.为验证问题,创建表:…
1.故障现象 mysql> select count(*) from dede_archives;ERROR 144 (HY000): Table '.xx' is marked as crashed and last (automatic?) repair failed 2.故障原因 Mysqld进程在数据写入时被意外关闭 意外关闭计算机 硬件故障 3.mysql官方解决方案 官方文档:https://dev.mysql.com/doc/refman/5.6/en/myisam-table-m…
今天在一个修改过权限的MySQL数据库遇到了"ERROR 1045 (28000): Access denied for user 'xxx'@'xxx.xxx.xxx.xxx' (using password: YES)"和"ERROR 1449 (HY000): The user specified as a definer ('xxx'@'xx') does not exist" 错误,花了点时间研究并重现该错误,并将其整理在此篇文章. 在测试数据库MyDB,…
对已存在的未分区的表进行分区 alter table test PARTITION BY RANGE(id) (PARTITION p1 VALUES LESS THAN (101),PARTITION p2 VALUES LESS THAN (201)  ) 提示错误: Table has no partition for value 201 原因是分区没有包含所有数据,改成: alter table test PARTITION BY RANGE(id) (PARTITION p1 VALU…
CREATE TABLE `user` (`id` bigint(32) NOT NULL AUTO_INCREMENT ,`name` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,`erp` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' ,`email` varchar(32) CHARACTER SET…
场景:需要对现在数据库的数据进行批量的进行is_del=1的操作,但是遇到一个问题,在执行sql的时候发现sql不能在查询特定表的时候再嵌套查询来做update的操作,经过讨论,后续我们想到用临时表的方案来解决这个问题. 开始进行数据测试,进行单用户的update操作,一切都比较顺利没有任何问题,操作的也是我们想操作的数据,接下来进行批量的数据操作,sql语句运行一会出现如下错误:ERROR 1114 (HY000): The table 'adv_date_tmp' is full报错为临时表…
1. 问题背景         InnoDB是新版MySQL(v5.5及以后)默认的存储引擎,之前版本的默认引擎为MyISAM,因此,低于5.5版本的mysql配置文件.my.cnf中,关于InnoDB的配置默认是被注释起来的.在实际使用时,发现不少人只是把mysql的配置文件拷贝到需要的路径下后,就启动mysqld,而建表时偏偏又指定engine=innodb.正常情况下,即使不显式配置innodb引擎的参数,该引擎也可以使用(因为MySQL会采用默认的innodb engine参数来管理对应…
MySQL执行更新语句报错: 更新语句:UPDATE test SET state=50 WHERE num IN(SELECT num FROM test WHERE state=60): 报错:ERROR 1093 (HY000): You can't specify target table 'test' for update in FROM clause 表数据: state num50 10150 10250 20160 20260 203 解决方式:同表不支持 update子查询结果…
最近用Mysql出现一个很奇怪的问题. 用SELECT * FROM `v_vod` ORDER BY vod_addtime desc LIMIT 0,18查询得到1个错误 ERROR 1032 (HY000): Can't find record in TABLE 这个数据库只有一个,没有主从,为什么会出现1032的错误呢.百思不得其解. 但是查询SELECT vod_id FROM `v_vod` ORDER BY vod_id desc LIMIT 0,18,只查询ID能查询出来. 然后…