<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[mysql的分区问题]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sun, 24 Jan 2010 06:34:58 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	MYSQL数据库从5.1开始支持分区，本人下载了5.1最后的版本5.1.14（最好的版本应该最稳定）。<br/>当尝试分区时，发现MYSQL分区的约束不少。<br/>我打算使用RANGE分区类型，通过日期&#039;BOOK_DATE&#039;每年一个分区。<br/><br/>CREATE TABLE `in_book_main` (<br/>&nbsp;&nbsp;`BOOK_MAIN_ID` varchar(32) NOT NULL,<br/>&nbsp;&nbsp;`BOOK_DATE` date NOT NULL,<br/>&nbsp;&nbsp;`PROVIDER_ID` varchar(32) default NULL,<br/>&nbsp;&nbsp;`STATUS` varchar(4) NOT NULL,<br/>&nbsp;&nbsp;`RMK` varchar(400) default NULL,<br/>&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`BOOK_MAIN_ID`),<br/>&nbsp;&nbsp;KEY `FK_Reference_7` (`PROVIDER_ID`),<br/>&nbsp;&nbsp;CONSTRAINT `FK_Reference_7` FOREIGN KEY (`PROVIDER_ID`) REFERENCES `base_provider` (`PROVIDER_ID`)<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8<br/>partition by range (to_days(BOOK_DATE))<br/>(PARTITION p0 VALUES LESS THAN (to_days(&#039;2007-01-01&#039;)),<br/>PARTITION p1 VALUES LESS THAN (to_days(&#039;2008-01-01&#039;)) ,<br/>PARTITION p2 VALUES LESS THAN (to_days(&#039;2009-01-01&#039;)) ,<br/>PARTITION p3 VALUES LESS THAN (to_days(&#039;2010-01-01&#039;)) ,<br/>PARTITION p4 VALUES LESS THAN (to_days(&#039;2011-01-01&#039;)) ,<br/>PARTITION p5 VALUES LESS THAN (to_days(&#039;2012-01-01&#039;)) ,<br/>PARTITION p6 VALUES LESS THAN (to_days(&#039;2013-01-01&#039;)) ,<br/>PARTITION p7 VALUES LESS THAN (to_days(&#039;2014-01-01&#039;)) ,<br/>PARTITION p8 VALUES LESS THAN (to_days(&#039;2015-01-01&#039;)) ,<br/>PARTITION p9 VALUES LESS THAN (to_days(&#039;2016-01-01&#039;)) ,<br/>PARTITION p10 VALUES LESS THAN (to_days(&#039;2017-01-01&#039;)),<br/>PARTITION p11 VALUES LESS THAN MAXVALUE );<br/><br/>注意：表的PRIMARY KEY是BOOK_MAIN_ID，有一个FOREIGN KEY引用另外一个表的ID(&quot;PROVIDER_ID&quot;),<br/>另外被引用的表结构如下：<br/>CREATE TABLE `base_provider` (<br/>&nbsp;&nbsp;`PROVIDER_ID` varchar(32) NOT NULL,<br/>&nbsp;&nbsp;`PROVIDER_NAME` varchar(100) NOT NULL,<br/>&nbsp;&nbsp;`ADDRESS` varchar(200) default NULL,<br/>&nbsp;&nbsp;`PHONE` varchar(20) default NULL,<br/>&nbsp;&nbsp;`CONTRACT_MAN` varchar(20) default NULL,<br/>&nbsp;&nbsp;`Email` varchar(100) default NULL,<br/>&nbsp;&nbsp;`RMK` varchar(400) default NULL,<br/>&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`PROVIDER_ID`),<br/>&nbsp;&nbsp;UNIQUE KEY `INDEX_PROVIDER_NAME` (`PROVIDER_NAME`)<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br/><br/>结果令我 意外的是报错<br/>ERROR 1215 : Cannot add foreign key constraint<br/><br/>外键出错，把添加外键的语句删除<br/>CREATE TABLE `in_book_main` (<br/>&nbsp;&nbsp;`BOOK_MAIN_ID` varchar(32) NOT NULL,<br/>&nbsp;&nbsp;`BOOK_DATE` date NOT NULL,<br/>&nbsp;&nbsp;`PROVIDER_ID` varchar(32) default NULL,<br/>&nbsp;&nbsp;`STATUS` varchar(4) NOT NULL,<br/>&nbsp;&nbsp;`RMK` varchar(400) default NULL,<br/>&nbsp;&nbsp;PRIMARY KEY&nbsp;&nbsp;(`BOOK_MAIN_ID`)<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8<br/>partition by range (to_days(BOOK_DATE))<br/>(PARTITION p0 VALUES LESS THAN (to_days(&#039;2007-01-01&#039;)),<br/>PARTITION p1 VALUES LESS THAN (to_days(&#039;2008-01-01&#039;)) ,<br/>PARTITION p2 VALUES LESS THAN (to_days(&#039;2009-01-01&#039;)) ,<br/>PARTITION p3 VALUES LESS THAN (to_days(&#039;2010-01-01&#039;)) ,<br/>PARTITION p4 VALUES LESS THAN (to_days(&#039;2011-01-01&#039;)) ,<br/>PARTITION p5 VALUES LESS THAN (to_days(&#039;2012-01-01&#039;)) ,<br/>PARTITION p6 VALUES LESS THAN (to_days(&#039;2013-01-01&#039;)) ,<br/>PARTITION p7 VALUES LESS THAN (to_days(&#039;2014-01-01&#039;)) ,<br/>PARTITION p8 VALUES LESS THAN (to_days(&#039;2015-01-01&#039;)) ,<br/>PARTITION p9 VALUES LESS THAN (to_days(&#039;2016-01-01&#039;)) ,<br/>PARTITION p10 VALUES LESS THAN (to_days(&#039;2017-01-01&#039;)),<br/>PARTITION p11 VALUES LESS THAN MAXVALUE );<br/><br/>又报错，这次轮到主键了。<br/>ERROR 1490 : A PRIMARY KEY must include all columns in the table&#039;s partitioning function<br/><br/>再把添加主键的语句删除<br/>CREATE TABLE `in_book_main` (<br/>&nbsp;&nbsp;`BOOK_MAIN_ID` varchar(32) NOT NULL,<br/>&nbsp;&nbsp;`BOOK_DATE` date NOT NULL,<br/>&nbsp;&nbsp;`PROVIDER_ID` varchar(32) default NULL,<br/>&nbsp;&nbsp;`STATUS` varchar(4) NOT NULL,<br/>&nbsp;&nbsp;`RMK` varchar(400) default NULL<br/>) ENGINE=InnoDB DEFAULT CHARSET=utf8<br/>partition by range (to_days(BOOK_DATE))<br/>(PARTITION p0 VALUES LESS THAN (to_days(&#039;2007-01-01&#039;)),<br/>PARTITION p1 VALUES LESS THAN (to_days(&#039;2008-01-01&#039;)) ,<br/>PARTITION p2 VALUES LESS THAN (to_days(&#039;2009-01-01&#039;)) ,<br/>PARTITION p3 VALUES LESS THAN (to_days(&#039;2010-01-01&#039;)) ,<br/>PARTITION p4 VALUES LESS THAN (to_days(&#039;2011-01-01&#039;)) ,<br/>PARTITION p5 VALUES LESS THAN (to_days(&#039;2012-01-01&#039;)) ,<br/>PARTITION p6 VALUES LESS THAN (to_days(&#039;2013-01-01&#039;)) ,<br/>PARTITION p7 VALUES LESS THAN (to_days(&#039;2014-01-01&#039;)) ,<br/>PARTITION p8 VALUES LESS THAN (to_days(&#039;2015-01-01&#039;)) ,<br/>PARTITION p9 VALUES LESS THAN (to_days(&#039;2016-01-01&#039;)) ,<br/>PARTITION p10 VALUES LESS THAN (to_days(&#039;2017-01-01&#039;)),<br/>PARTITION p11 VALUES LESS THAN MAXVALUE );<br/><br/>成功，但不是我所想要的，因为没有了主键和外键。上网找了些资料，了解到确实主键要去掉，但是外键问题没有找到。<br/>牺牲主键我可以接受，但是外键要去掉我很不理解也不能接受。<br/>请～～～ 
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] mysql的分区问题]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>