1、 Mycat 不支持:下面這種語法。
DELETE d from hotspot d
2、Mycat在heidisql客戶端上列不出來表。但是可以正常使用。
3、導數數據通過heidisql能很順利導入。Navicat for MySQL很難導入,得用txt格式導入。
4、1.6版本的mycat支持存儲過程的創建 、調用。{通過前面加上注解,通過注解里面查詢的表來確定要創建或者執行存儲過程的庫}。一定要記得去掉存儲過程創建語句上的 權限定義部分。
/*!mycat: sql=select 1 from hotspot */
CREATE PROCEDURE `create_data_extract`()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE b VARCHAR(20);
DECLARE cur1 CURSOR FOR SELECT t.id
FROM hotspot t INNER JOIN v_student_net v ON t.name=v.username where t.id >(select IFNULL(max(h.kid),0) from hotspot_extarct h );
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 0;
SET done = (SELECT count(id) FROM hotspot t where t.id >(select IFNULL(max(h.kid),0) from hotspot_extarct h ));
OPEN cur1;
FETCH cur1
INTO b;
WHILE done > 0 DO
CALL data_extract(b);
FETCH cur1
INTO b;
SET done = done-1;
END WHILE;
CLOSE cur1;
END
5、
調用存儲過程
/*!mycat: sql=select 1 from hotspot */ call create_data_extract()
6、Mycat導入數據,注意事項
注意事項:
(1)、原始表的自增主鍵{AUTO_INCREMENT=1446}值,就是之前用掉的值,要去掉。新庫按照新的來
(2)、{CREATE TABLE IF NOT EXISTS `edu_impoverish` } 改成 {CREATE TABLE `edu_impoverish` (}。mycat沒有判斷是否存在的功能
(3)、DROP TABLE IF EXISTS `onlinenum`; 這種格式是支持的。
(4)、全局表,字典表:可能會在其他表中存有其id字段的值。所以這些表id也要導過來。
(5)、業務表的id最好也導入過來,避免重新生成導致關聯對不上的情況。
(6)、全局表、跨庫分表都要用全局序列。單庫單業務,不和其他關聯的表;可以用數據庫自帶的自增主鍵。
7、表結構同步到mycat要做的修改
==============================================================================
7.1、第一種是原來的表自增主鍵,現在如果編程跨庫的表了。則要換成全局序列主鍵。原始表的自增主鍵要去掉
ALTER TABLE `hotspot`
ALTER `id` DROP DEFAULT;
ALTER TABLE `hotspot`
CHANGE COLUMN `id` `id` INT(11) NOT NULL COMMENT '臨時表id 與主id無關' FIRST;
==============================================================================
==============================================================================
7.2、mycat不支持聯合主鍵:所以這個表改成自增主鍵。原來的聯合主鍵變成:唯一約束
ALTER TABLE `m_base_term`
ADD COLUMN `id` BIGINT NOT NULL AUTO_INCREMENT FIRST,
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`),
ADD UNIQUE INDEX `ecode_termid` (`ecode`, `termid`);
==============================================================================
8、Mycat有一些不支持、或者支持不好的函數
8.1、IFNULL 如下圖的sql。Mycat不會進行結果合並。而是返回三個結果。
SELECT
IFNULL(max(kid),0)
as max
FROM access_record_inout_temp2
8.1.1、 所以要改成下面這種格式。
SELECT
MAX(t.max) as max
FROM
(
SELECT
IFNULL(max(id),0)
as max
FROM m_rec_consume_copy
)t