问题描述:

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─┐
│ 6 │ 106 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
│ 1 │ 101 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 2 │ 102 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 3 │ 103 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 4 │ 104 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 5 │ 105 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘ 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─┐
│ 6 │ 106 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
│ 1 │ 101 │ 1 │ 2 │ 12 │ 4 │ 5 │ 6 │ 7 │
│ 2 │ 102 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 3 │ 103 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 4 │ 104 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 5 │ 105 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘ 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─┐
│ 6 │ 106 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
│ 1 │ 101 │ 1 │ 2 │ 12 │ 4 │ 5 │ 6 │ 7 │
│ 2 │ 102 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 3 │ 103 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 93147008 │
│ 4 │ 104 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 5 │ 105 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘ 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─┐
│ 6 │ 106 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘
┌─id─┬─userId─┬─rightId─┬─onlyread─┬─selectFlag─┬─insertFlag─┬─deleteFlag─┬─updateFlag─┬─downloadFlag─┐
│ 1 │ 101 │ 1 │ 2 │ 12 │ 4 │ 5 │ 6 │ 7 │
│ 2 │ 102 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 3 │ 103 │ 1 │ 2 │ 3 │ 4 │ 5 │ 93147008 │ 93147008 │
│ 4 │ 104 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
│ 5 │ 105 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │
└────┴────────┴─────────┴──────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘ 6 rows in set. Elapsed: 0.009 sec.

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

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

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

  1. 使用SQL语句查询表及表字段类型说明

    今天突然遇到有人要数据库表及表字段说明,数据库表太多又不能一个个表去找,就想想SQL是否能直接查询出来. 经过查询资料,加上一些自己的一些调整写了一个sql语句,在此记录一下,以方便日后查找使用. S ...

  2. 通过jdbc获取数据库中的表结构 主键 各个表字段类型及应用生成实体类

    http://www.cnblogs.com/lbangel/p/3487796.html 1.JDBC中通过MetaData来获取具体的表的相关信息.可以查询数据库中的有哪些表,表有哪些字段,字段的 ...

  3. SqlBulkCopy 批量导入数据 转换表字段类型

    在使用SqlBulkCopy导入数据时,要有一个跟数据库里面同样的DataTable 要赋值表名 要求每个列跟数据库中列同名,并且列的类型要赋值跟数据库中列的类型对应的NET类型 要求数据库中为Nul ...

  4. Oracle更新表字段时内容中含有特殊字符&的解决方法

    今天在做 Oracle表字段更新时出现了特殊字符&,导致无法更新. 这个问题是第二次碰到了,所以在此记录下,以备后用. 举例: update t set col1='A&B' wher ...

  5. MySQL建表字段类型

    1.数据库:在MySQL中,要存储数据,必须从数据库开始,因此首先要创建数据库,但由于学校的MySQL服务器对学生数据帐号有限止,学生不得创建数据库,故每个学生的帐号中已事先由信息中心为大家建立了一个 ...

  6. 【Navicat】获取表结构的DDL语句以及获取更新表字段的操作的DDL

    1.获取表结构的DDL语句 2.获取修改表结构某一字段的DDL语句  设计表-修改表字段(记住不要保存)-SQL预览

  7. oracle查看某表字段类型

    来源:https://www.cnblogs.com/ufindme/p/5033843.html 今天遇到一个问题:要求在可重复执行的SQL脚本添加一段SQL代码:修改当前的数据类型.因为SQL代码 ...

  8. oracle 在表中有数据的情况下修改表字段类型或缩小长度

    分享自己一些常用的sql语句给大家 偶尔我们需要在已有表,并且有数据的情况下,修改其某个字段的类型或缩短他的长度,但是因为表中有数据,所以不可以直接修改,需要换个思路. //建立测试表,可跳过(善于应 ...

  9. 修改非空表字段类型Oracle

    执行以下语句报"要修改数据类型,则要更改的列必须为空"       alter table 表名 modify (目标字段 varchar2(100)); 解决步骤: 第一步,在表 ...

  10. 解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

    前言:最近在做一个通用查询单表的组件,所以 sql 的写法就是 select *,然后 resultType="map" .如果数据库中的表里有字段类型为 Long 等类型时,my ...

随机推荐

  1. 4、Linux 网络基础

    1.基础命令 hostname:查看或设置当前主机名 route [-n]:查看或设置主机中路由表信息 netstat:查看系统的网络连接状态.路由表.接口统计等信息 常用选项 -a:显示所有-n:以 ...

  2. Github Copilot绑定Jetbrains IDE无效的解决方案

    在Github中进行教育认证后不会自动开通Copilot功能,因此,在进行了Github教育认证之后,在使用之前要进入Github Copilot官网开通Coplilot,如果忽略了这一点,绑定Jet ...

  3. go-admin开发小技巧

    搜索条件参考下面的文件 https://github.com/go-admin-team/go-admin-core/blob/master/tools/search/query_test.go ty ...

  4. ubuntu编译与安装 OpenSSL-1.0.0

    apt-get purge openssl rm -rf /etc/ssl #删除配置文件 编译与安装 OpenSSL prefix 是安装目录,openssldir 是配置文件目录,另外建议安装两次 ...

  5. python教程6.2-OS模块random模块

    OS模块  random模块

  6. .NET 代理模式(二) 动态代理-DispatchProxy

    前言 我们都知道,在.NET中实现动态代理AOP有多种方案,也有很多框架支持,但大多框架的实现原理都是通过Emit配合Activator一起使用,从IL级别上实现动态代理. 其实在.NET中有一个更为 ...

  7. sql审计平台部署

    其它数据库管理平台:Orchestrator部署 包链接:https://github.com/hhyo/Archery/tree/master 部署链接:https://github.com/hhy ...

  8. .NET Framework 4.7.2下 Hangfire 的集成

    参考资料: 开源的.NET定时任务组件Hangfire解析:https://www.cnblogs.com/pengze0902/p/6583119.html.Net Core 简单的Hangfire ...

  9. 【C#】预处理指令的学习 条件编译

    预处理指令,我的理解是,编译器在编译过程中所做的指令,能根据用户定义的条件选择性的编译代码. 比如在debug下要打印些信息,然而release之后,不能出现debug的信息,这个时候就能用预处理指令 ...

  10. golang 切片原理面试题

    package main import "fmt" func main() { var s = make([]int, 0, 10) _ = append(s, 1,2,3) fm ...