MySQL数据库插入数据出现
ERROR 1526 (HY000): Table has no partition for value xxx
工作的时候发现无法插入数据,报错:
ERROR 1526 (HY000): Table has no partition for value xxx
根据字面意思可以猜测大概是值已经超出了分区的范围,查询表结构发现此表创建了分区,并且设定了规则是按照ID范围存储数据,
当插入的数据最后的分区ID值要大时,报错。解决方法可以直接添加分区即可。为验证问题,创建表:
/*********************************************************/
create table test_tb3(id int auto_increment primary key,name varchar(20))
charset=utf8
partition by range(id) (partition p0 values less than(10),
partition p1 values less than(20));
/*********************************************************/
不断insert 数据 终于报错:
MariaDB [testDB]> insert into test_tb3(name) value('Jerry');
ERROR 1526 (HY000): Table has no partition for value 20
解决方法:
alter table test_tb3 partition by range(id) (partition p3 values less than(40));
以上添加一个名为 p3 的分区,然后存放id值为20-39的数据。
/********************************************************/
验证成功:
MariaDB [testDB]> insert into test_tb3(name) value('Rex');
Query OK, 1 row affected (0.00 sec)
MariaDB [testDB]> select max(id) from test_tb3;
+---------+
| max(id) |
+---------+
| 20 |
+---------+
1 row in set (0.00 sec)
MariaDB [testDB]>
/*******************************************************/
然后想想为什么要做这种ID的分区呢,试想,假如你数据库数据很多,数据文件很大,假如一个文件10G,假如你要查询数据,
就意味着你要读这个10G大小的文件才能SELECT你需要的值,啊咧?服务器估计会想骂你不讲*吧?于是为了提高IO性能,应该说是数据库性能
尝试设置规则把数据文件分开存放(上面的我没弄啦)这样查询的时候就可以根据ID从不同的磁盘读取数据咯。数据库算是提升了性能吧。
来了解下怎么实现:
/******************************************************/
mysql 5.6.6以上版本支持单表指定目录,且目录权限属主和属组为mysql:mysql,根据不同的存储引擎存放的文件也有差别:
MYISAM:
.frm--->存放表结构
.myd--->存放数据
.myi--->存放索引
Innodb:
.frm--->存放表结构
.idb--->存放单个表的数据和索引
.isl--->存储表的路径名,类似软连接
1.设置参数,/etc/my.cnf加入参数配置 innodb_file_per_table = 1
2.创建表:
drop table table_td5 if exists;
create table table_td5 (id int auto_increment primary key,name varchar(30))
charset=utf8 engine=innodb
partition by range(id) (
partition p0 values less than(10)
data directory='/mysqldata/p0',
partition p1 values less than(20)
data directory='/mysqldata/p0',
partition p2 values less than(30)
data directory='/mysqldata/p2');
注意存储引擎MyISAM和InnoDB的差别在于 Innodb索引和数据都在一个文件中,而MyISAM索引和数据分开两个文件。
所以MyISAM存储引擎可以指定INDEX目录。
3.插入值ID到了30后:
MariaDB [testDB]> insert into table_td5(name) value('handsom_rex');
Query OK, 1 row affected (0.00 sec)
MariaDB [testDB]> insert into table_td5(name) value('handsom_rex');
ERROR 1526 (HY000): Table has no partition for value 30
MariaDB [testDB]> insert into table_td5(name) value('handsom_rex');
ERROR 1526 (HY000): Table has no partition for value 30
发现ID已超限制.
MySQL数据库插入数据出现 ERROR 1526 (HY000): Table has no partition for value xxx的更多相关文章
-
ERROR 1526 (HY000): Table has no partition for value xxx
最近,我们有些功能需要使用到基于多个字段的分区,需要同时支持oracle/mysql,但是开发人员又希望尽可能少的改动业务代码,也不愿意使用多列分区,在oracle 11g之前,不支持多列分区(12. ...
-
Python向mysql数据库插入数据
一.向表tcolor中插入数据的主要流程如下: import datetimeimport pymysql.cursorsconnection = pymysql.connect(host='loca ...
-
关于mysql数据库插入数据,不能插入中文和出现中文乱码问题
首先,推荐一篇博客:http://www.cnblogs.com/sunzn/archive/2013/03/14/2960248.html 当时,我安装完mysql数据库后,新建一个数据库后插入数据 ...
-
Python数据库(二)-Mysql数据库插入数据
通过python连接mysql数据库,并插入数据 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import pymysql ...
-
MySQL数据库使用报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
今天MySQL数据库,在使用的过程中一直报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement be ...
-
用Python向MySQL数据库插入数据
最近一直在学习MySQL数据库,很感兴趣.这次我做了一个简单的尝试,使用Python3.4与MySQL数据库进行交互,将一份从雪球网上下载的某股票数据上传至MySQL数据库.仅为初学者提供参考,高手请 ...
-
C#连接mysql数据库插入数据后获取自增长主键ID值
From: http://blog.csdn.net/zbc496218/article/details/51082983 MySqlConnection conn = new MySqlConnec ...
-
在控制台远程连接mysql数据库时,出现ERROR 2049 (HY000)错误
问题的原因是,你本地的数据库版本过高,而远程的数据库版本低. 解决方法:在连接时加上 --skip-secure-auth 参数就可以了. mysql -h主机 -u用户名 -p密码 --skip- ...
-
向MySQL数据库插入数据出现乱码的情况分析
(1)第一种情况在新建数据库时 (2)第二种情况就是,IDE环境里面配置编码设置为UTF-8 (3)第三种情况就是连接数据库时,没有设置编码.这个是最常规的.这个看起来很容易解决,但是需要注意MySQ ...
随机推荐
-
ubunt14.04 安装JDK
1.到 Sun 的官网下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择 ...
-
MMO之禅(二)职业精神
MMO之禅(二)职业精神 --心态 目标 信仰 Zephyr 201304 继续上篇,继续讲什么?打了很多腹稿点滴,从引擎架构,到上层数据.逻辑模块规划,想了很多,临起笔,却总发觉四顾心茫然,乱不可言 ...
-
HDU 2089 数位dp入门
开始学习数位dp...一道昨天看过代码思想的题今天打了近两个小时..最后还是看了别人的代码找bug...(丢丢) 传说院赛要取消 ? ... 这么菜不出去丢人也好吧~ #include<stdi ...
-
lightoj1030(期望dp)
有n个格子,初始的时候pos=1,然后丢骰子,然后新的pos为pos+骰子的点数,走到新的pos,可以捡走该pos上的黄金. 特殊的是,如果新的pos超过了n,那么是不会走的,要重新丢骰子. 所以要分 ...
-
iOS:编译错误 linker command failed with exit code 1 (use -v to see invocation)
将project不加入.m要求加入 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzI0MzQ2OQ==/font/5a6L5L2T/fontsi ...
-
WPF中将16进制颜色码转换成SolidColorBrush
使用ColorConverter.ConvertFromString(string colorValue)方法 例如:new SolidColorBrush((Color)ColorConverter ...
-
HDU 1527 取石子游戏(威佐夫博弈)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
-
T-shirt 0 0....
老师给我这件T-shirt的目的是为了让我减肥吗...... 听说了pbb的事迹好感动 //偷偷吐槽一句,那个全套吉米多维奇可以报销吗...我就看了2行........ 吓得我赶紧看了一下浴盆的气球
-
OSRM笔记
OSRM OSRM(OpenStreetMap Routeing Machine)可用于路线规划.作为高性能的路线规划引擎,OSRM使用C++14编写,基于开源的OpenStreetMap数据实现. ...
-
homewor
<jsp;include>动作和指令的区别: 一:执行时间上: <%@ include file=”relativeURI”%> 是在翻译阶 ...