【问题标题】:What is the value of a valid empty blob on mysql?mysql 上有效的空 blob 的值是多少?
【发布时间】:2018-10-10 07:07:53
【问题描述】:

假设您想在名为 table_a 的表上插入或更新一行。

table_a 有一个名为 column_ablob 列。在 column_a 中,您只想通过故意传递一个值来插入一个有效且最小的空值。

这在 MySQL 中可能吗?如果是这样,有效的空 blob 的值是多少?

【问题讨论】:

  • 只需NULL 应该可以吗?
  • @Terry 我试过... SET column_a=NULL,但似乎没有用。它说Unrecognized keyword. (near "NULL" at position 66)
  • 这可能是因为您在查询中使用了保留关键字? stackoverflow.com/questions/44390539/…。您可以set up an SQLfiddle 向我们展示一个基本的概念验证示例。
  • 请注意,Unrecognized keyword. (near "NULL" at position 66) 不是来自 MySQL 服务器的错误。这个特定错误似乎是您使用的任何查询工具的缺陷。

标签: mysql blob


【解决方案1】:

NULL 值可能就是您要查找的值。假设您的表有iddata 列。如果data 没有默认值,则可以执行insert into table_a (?, ?) VALUES (1, NULL)。相应的记录将具有1id 和等于NULLdata

另一种解决方案是使用默认值设置为NULL 来定义您的列。那么,上面的请求就相当于insert into table_a (?) VALUES (1)

外部参考: https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html

【讨论】:

  • 我尝试了相同的更新查询过程,但它不起作用。 update table_a set column_a=NULL
  • 你的表的结构是什么? column_a 是否允许空值?如果不是,则需要用ALTER表达式(mysqltutorial.org/mysql-alter-table.aspx)更改列的约束
  • 不允许空值
  • 所以这可能就是您不能将NULL 设置为值的原因。然后,您应该使用ALTER TABLE table_a CHANGE COLUMN column_a column_a BLOB;ALTER TABLE table_a ALTER column_a SET DEFAULT NULL;,以便将默认值设置为NULL
  • 那么您应该允许NULL 表示no fileno images。我认为假设NULL 无法描述这种情况从根本上说是错误的。但是,如果您根本没有改变的可能,那么只需输入一个空字符串即可(not null 并不意味着不能使用假等效值,而是表示“没有值”)。
【解决方案2】:

NULL 应该适用于填充 BLOB 列。

插图:

-- Create a table with BLOB column
CREATE TABLE table_a (
id INTEGER PRIMARY KEY,
column_a BLOB
);

-- Populate a row with BLOB column as NULL
INSERT INTO table_a values(1,NULL);

-- Check data in table
select * from table_a;
+----+----------+
| id | column_a |
+----+----------+
|  1 | NULL     |
+----+----------+

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 2016-05-23
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2011-05-15
    • 2013-12-28
    相关资源
    最近更新 更多