• 【ClickHouse问题】更新表字段类型为Nullable(Int32)的列值,最终结果都是固定一个值:93147008???


    问题描述:

    clickhouse更新表数据。更新的列数据类型是Nullable(Int32),不管更新为什么数值,最后查询的结果都是一个固定值:93147008

    问题复现:

    1:建一张测试表

    CREATE TABLE sys_user_menu_relationships_test2
    (
        `id` Int32,
        `userId` Nullable(String),
        `rightId` Nullable(Int32),
        `onlyread`  Int32,
        `selectFlag` Int32,
        `insertFlag` Nullable(Int32),
        `deleteFlag` Nullable(Int32),
        `updateFlag` Nullable(Int32),
        `downloadFlag` Nullable(Int32)
    )
    ENGINE = MergeTree
    ORDER BY id
    SETTINGS index_granularity = 8192;

    2:插入几条数据

    INSERT INTO sys_user_menu_relationships_test2(id,userId,rightId ,onlyread ,selectFlag ,insertFlag,deleteFlag ,updateFlag ,downloadFlag ) VALUES (1,'101',1,2,3,4,5,6,7);
    INSERT INTO sys_user_menu_relationships_test2(id,userId,rightId ,onlyread ,selectFlag ,insertFlag,deleteFlag ,updateFlag ,downloadFlag ) VALUES (2,'102',1,2,3,4,5,6,7);
    INSERT INTO sys_user_menu_relationships_test2(id,userId,rightId ,onlyread ,selectFlag ,insertFlag,deleteFlag ,updateFlag ,downloadFlag ) VALUES (3,'103',1,2,3,4,5,6,7);
    INSERT INTO sys_user_menu_relationships_test2(id,userId,rightId ,onlyread ,selectFlag ,insertFlag,deleteFlag ,updateFlag ,downloadFlag ) VALUES (4,'104',1,2,3,4,5,6,7);
    INSERT INTO sys_user_menu_relationships_test2(id,userId,rightId ,onlyread ,selectFlag ,insertFlag,deleteFlag ,updateFlag ,downloadFlag ) VALUES (5,'105',1,2,3,4,5,6,7);
    INSERT INTO sys_user_menu_relationships_test2(id,userId,rightId ,onlyread ,selectFlag ,insertFlag,deleteFlag ,updateFlag ,downloadFlag ) VALUES (6,'106',1,2,3,4,5,6,7);

    3:查询数据

    SELECT *
    FROM sys_user_menu_relationships_test2
    
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  61061234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  11011234567 │
    │  21021234567 │
    │  31031234567 │
    │  41041234567 │
    │  51051234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    
    6 rows in set. Elapsed: 0.005 sec. 

    4:更新Int32列selectFlag  (能正常更新,没有异常)

    centf8118.sharding1.db :) ALTER TABLE sys_user_menu_relationships_test2 update selectFlag = 12 where id = 1;
    
    ALTER TABLE sys_user_menu_relationships_test2
        UPDATE selectFlag = 12 WHERE id = 1
    
    
    Ok.
    
    0 rows in set. Elapsed: 0.003 sec. 
    
    centf8118.sharding1.db :) SELECT * FROM sys_user_menu_relationships_test2;
    
    SELECT *
    FROM sys_user_menu_relationships_test2
    
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  61061234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  110112124567 │
    │  21021234567 │
    │  31031234567 │
    │  41041234567 │
    │  51051234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    
    6 rows in set. Elapsed: 0.006 sec. 

    5:更新Nullable(Int32)列downloadFlag   (见证奇迹的时刻,注意这次更新的值为12)

    centf8118.sharding1.db :) ALTER TABLE sys_user_menu_relationships_test2 update downloadFlag= 12 where id = 3;
    
    ALTER TABLE sys_user_menu_relationships_test2
        UPDATE downloadFlag = 12 WHERE id = 3
    
    
    Ok.
    
    0 rows in set. Elapsed: 0.003 sec. 
    
    centf8118.sharding1.db :) SELECT * FROM sys_user_menu_relationships_test2;
    
    SELECT *
    FROM sys_user_menu_relationships_test2
    
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  61061234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  110112124567 │
    │  21021234567 │
    │  310312345693147008 │
    │  41041234567 │
    │  51051234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    
    6 rows in set. Elapsed: 0.006 sec. 

    更新完之后,就看到id = 3的downloadFlag列那个值是:93147008

    6:再更新Nullable(Int32)列 updateFlag  (见证奇迹的时刻2,注意这次更新的值为34) 

    centf8118.sharding1.db :) ALTER TABLE sys_user_menu_relationships_test2 update updateFlag= 34 where id = 3;
    
    ALTER TABLE sys_user_menu_relationships_test2
        UPDATE updateFlag = 34 WHERE id = 3
    
    
    Ok.
    
    0 rows in set. Elapsed: 0.004 sec. 
    
    centf8118.sharding1.db :) SELECT * FROM sys_user_menu_relationships_test2;
    
    SELECT *
    FROM sys_user_menu_relationships_test2
    
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  61061234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    ┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
    │  110112124567 │
    │  21021234567 │
    │  3103123459314700893147008 │
    │  41041234567 │
    │  51051234567 │
    └────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
    
    6 rows in set. Elapsed: 0.009 sec. 

    问题来了,为什么数据类型为Nullable(Int32)列,更新的时候不管怎么更新都是固定的一个值:93147008???

    有哪位大神知道为啥???

  • 相关阅读:
    javaweb大文件上传
    java+大文件分段上传
    php文件断点上传
    java+断点续传
    .net断点续传
    PHP检测每一段代码执行时间
    javaScript阻止浏览器F5刷新
    PHP动态修改配置文件
    eval()计算某个字符串,js和jquery都可以使用
    php 访问java接口数据
  • 原文地址:https://www.cnblogs.com/DBArtist/p/clickhouse_question.html
Copyright © 2020-2023  润新知