zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Android Studio快速查看apk的MD5、SHA1、SHA256
    aapt remove 命令报 error during crunch archive is toast
    如何快速将MySQL数据库转换为PostgreSQL数据库
    Exception in thread “main“ org.apache.xmlbeans.impl.values.XmlValueDisconnectedException
    idea2021奇葩问题:找不到程序包和符号
    Unable to find method ‘org.gradle.api.tasks.TaskInputs.property
    laravel response返回值精度问题
    中缀、前缀、后缀表达式的运算
    选择排序
    中缀表达式转后缀表达式
  • 原文地址:https://www.cnblogs.com/double-kill/p/8324217.html
Copyright © 2011-2022 走看看