草庐IT

T_Unsigned

全部标签

Mysql:将 int 字段设置为 unsigned 可以节省大量空间。为什么?

我的印象是将int字段设置为有符号与无符号不会节省任何空间。今天我将一些列设置为无符号,因为它们永远不会存储负值,并且注意到表大小减少了15%。当我将它们的int列设置为无符号时,我的一些表的大小没有减小,一些表的大小大大减小了。有人对此有解释吗? 最佳答案 @FrankSchmitt和@Kenny是正确的-如果您只观察数据类型更改前后的文件大小,您会看到不同的效果。有符号整数和无符号整数各占用4个字节,两者都不是更节省空间的。当您添加或更改列时,以及在其他一些情况下,MySQL会执行表重组。也就是说,它将表的内容复制到一个新文件,

java - 使用 JDBC 客户端获取时 MySQL 的 UNSIGNED BIGINT 出现问题

根据MySQLdocs,UnsingedBigint的最大值=18446744073709551615我在未签名的Bigint列中插入了一个值9223372036854776900(远低于最大限制)。没有显示错误。当我尝试通过JDBC客户端以编程方式访问它时,出现异常:com.mysql.jdbc.exceptions.jdbc4.MySQLDataException:'9223372036854776900'incolumn'10'isoutsidevalidrangeforthedatatypeBIGINT.atsun.reflect.NativeConstructorAccess

mysql - 创建表 : You have an error in your SQL syntax near 'order( order_id INT UNSIGNED NOT NULL AUTO_INCREMENT, user_id ' at line 1 时出错

这个问题在这里已经有了答案:SyntaxerrorduetousingareservedwordasatableorcolumnnameinMySQL(1个回答)关闭8年前。我正在尝试使用PHP脚本在同一个MySQL数据库中创建2个表:主键为“user_id”的表“user”和来自“user”表的主键为“order_id”和外键“user_id”的表“order”(一对多关系)。用户表创建成功,没有问题:$sql="CREATETABLEuser(user_idINTUNSIGNEDNOTNULLAUTO_INCREMENT,typeENUM('member','admin')NOTN

mysql - 为什么 UNSIGNED 不能用于 MYSQL 中的 FOREIGN KEY?

当我想用外键创建一个表时,我遇到了一个奇怪的问题。请看如下结果:mysql>CREATETABLEIFNOTEXISTSTL_USER(->user_idINT(10)UNSIGNEDNOTNULLPRIMARYKEY,->nicknameVARCHAR(45)NULL->)ENGINE=InnoDB;QueryOK,0rowsaffected(0.01sec)mysql>CREATETABLEIFNOTEXISTSTL_EVENT_COMMENT(->event_comment_idINTPRIMARYkey,->commentVARCHAR(45)NULL,->user_idINT

java - 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

我正在基于MySQL数据库中的现有表创建Java持久性实体Bean(使用NetBeansIDE8.0.1)。我在该表中遇到了一个类型为"UnsignedTINYINT(3)"的字段。我发现可以对definethetypeofacolumnasanunsignedint执行以下操作:privatelongfoo;@Column(columnDefinition="UNSIGNEDINT(11)")publiclonggetFoo(){returnfoo;}重现问题的步骤:我正在尝试创建一个字段,如下所示:@Size(max=3)@Column(name="WorkingHours",co

mysql - 为什么我必须在 mysql 子查询中将 bit(1) 转换为 unsigned?

出于某种原因,如果我将该列作为子查询的一部分而不是作为“正常”查询包含在内,我必须将BIT(1)MySQL列显式转换为UNSIGNED才能返回0或1。请允许我详细说明...我有两个数据库表:比赛和投票CONTESTS-id,...,...VOTES-...,overBIT(1),...,...如果我运行这个查询,我会得到我期望的结果......SELECTvotes.overasvote_overFROMvotesWHEREvotes.contest_id=38;结果:vote_over:1(ok,thismakessense)但是,如果我尝试选择votes.over作为子查询,我会得

MySQL BIGINT UNSIGNED 值在与 (-1) 相乘时超出范围

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:BIGINTOut-of-rangeErrorsinceMySQL5.5任何人都知道为什么以下会产生1690错误:BIGINTUNSIGNEDvalueisoutorrange?SELECTCAST(IF(trades.`buyer`=63,-1,1)*trades.`price`*trades.`amount`ASSIGNED)ASpriceTotalFROMtradesWHERE(trades.`buyer`=63ORtrades.`seller`=63);我想做的是当用户是买家时使priceTotal为

java - 如何在 Java 中将 MySQL unsigned int 转换为 Protocol Buffer uint32?

我正在努力将一堆旧的制表符分隔的MySQL数据库转储文件转换为ProtocolBuffer,但遇到了麻烦。MySQL表包含一个类型为int(11)unsigned的字段,我已将其映射到.proto文件中的protobufuint32。在解析MySQL记录并尝试将它们转换为protobuf消息时,很容易使用Integer.valueOf(String)(或Long.valueOf(String))来解析该字段以避免溢出)。然而,ProtocolBuffersLanguageGuide表示here在Java中,uint32使用int数据类型表示,但第一位被重新解释为最高位而不是符号位。所以

java - 在 Java 中转换 smallint unsigned

我正在使用jOOQ获取id,它在MySQL中是smallintunsignedprimarykeyauto_incrementpublicListgetID(){Factorysql=newFactory(Database.getInstance().connect(),SQLDialect.MYSQL);return(List)sql.select().from("users").fetch().getValues("id_users");}然后出错org.jooq.tools.unsigned.UShortcannotbecasttojava.lang.IntegerHere他们写

objective-c - Unicode 格式化编译器警告 : Format specifies type 'unsigned short' but the argument has type 'int'

有点强制症,但我讨厌收到任何编译器警告。当我更新XCode时,我开始收到此编译器警告:Formatspecifiestype'unsignedshort'buttheargumenthastype'int'当我尝试使用以下代码包含学位的Unicode字符时:currentVal=[NSStringstringWithFormat:@"%.2f%C",angleDeg,0x00B0];如何通过更改代码或关闭特定的编译器警告来消除编译器警告? 最佳答案 将字面量转换为unichar:currentVal=[NSStringstringW