mycat使用注意事項


 

1、 Mycat 不支持:下面這種語法。

DELETEfrom 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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM