MySQL 视图中的 BLOB 而不是正确的数据

2024-03-20

我使用创建了一个 MySQL 视图UNION ALL从两个表中,这样我就可以为这些表中的相同数据获得相同的列名(即tbl1.author2 AS translator ... tbl2.translator AS translator)等等,问题是当我尝试从该视图中选择某些内容时,一半的数据显示为BLOB,而不是原始值。

视图的定义是:

SELECT e.id AS prod_id, 
e.price_vat AS price_vat, 
e.product AS title, 
e.authors AS author, 
e.isbn AS isbn, 
e.ean AS ean, 
e.page_count AS page_count, 
e.publishers AS publishers, 
e.issue_year AS issue_year,
'e' AS type
FROM ama_euromedia_products AS e
UNION ALL
SELECT
k.publishers AS publishers, 
DATE_FORMAT(k.publication_date, '%Y') AS issue_year,
k.ean AS ean, 
k.number_of_pages AS page_count, 
k.author AS author, 
k.isbn AS isbn, 
k.title_full AS title, 
k.price_amount AS price_vat, 
k.internal AS prod_id,
'k' AS type
FROM ama_kosmas_products AS k 

表定义:

CREATE TABLE `ama_euromedia_products` (
  `id` int(9) NOT NULL,
  `product` text COLLATE utf8_czech_ci NOT NULL,
  `isbn` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `authors` text COLLATE utf8_czech_ci,
  `publishers` text COLLATE utf8_czech_ci,
  `price` float(9,0) DEFAULT NULL,
  `price_vat` float(9,0) DEFAULT NULL,
  `vat` int(3) DEFAULT NULL,
  `availability` tinyint(1) DEFAULT NULL,
  `genres` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `ean` bigint(14) DEFAULT NULL,
  `page_count` int(7) DEFAULT NULL,
  `issue_year` int(4) DEFAULT NULL,
  `supply_date` timestamp NULL DEFAULT NULL,
  `width` int(7) DEFAULT NULL,
  `height` int(7) DEFAULT NULL,
  `weight` int(7) DEFAULT NULL,
  `binding` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `long_v` text COLLATE utf8_czech_ci,
  `short` text COLLATE utf8_czech_ci,
  `imgurl` text COLLATE utf8_czech_ci,
  `is_preliminary` tinyint(1) DEFAULT NULL,
  `stack_date` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `invoice_only` tinyint(1) DEFAULT NULL,
  `new` tinyint(1) DEFAULT NULL,
  `sale` tinyint(1) DEFAULT NULL,
  `return_v` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `indexy` (`id`,`isbn`,`genres`,`ean`,`issue_year`,`supply_date`,`stack_date`,`new`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;


CREATE TABLE `ama_kosmas_products` (
  `id` int(7) NOT NULL AUTO_INCREMENT,
  `internal` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `isbn` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `ean` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `contained_items` text COLLATE utf8_czech_ci,
  `title_original` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `title_full` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `subtitle` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `other_text` text COLLATE utf8_czech_ci,
  `languages` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `author` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `illustrator` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `translator` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `number_of_pages` int(7) DEFAULT NULL,
  `subject_scheme_name` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `subject_code` int(7) DEFAULT NULL,
  `subject_heading_text` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `media_file_label` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `media_file_thumbnail` varchar(255) COLLATE utf8_czech_ci DEFAULT NULL,
  `publishers` text COLLATE utf8_czech_ci,
  `publishing_status` tinyint(2) DEFAULT NULL,
  `publication_date` timestamp NULL DEFAULT NULL,
  `product_availability` tinyint(2) DEFAULT NULL,
  `on_hand` int(7) DEFAULT NULL,
  `on_order` int(7) DEFAULT NULL,
  `price_amount` int(7) DEFAULT NULL,
  `price_tax_rate_code` varchar(1) COLLATE utf8_czech_ci DEFAULT NULL,
  `price_tax_rate_percent` tinyint(2) DEFAULT NULL,
  `price_tax_amount` int(7) DEFAULT NULL,
  `price_taxable_amount` int(7) DEFAULT NULL,
  `reissue_date` timestamp NULL DEFAULT NULL,
  `invoice_only` tinyint(1) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `internal` (`internal`)
) ENGINE=MyISAM AUTO_INCREMENT=43341 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

知道为什么会这样吗?


当您使用以下命令创建视图时UNION,您必须确保相应列的数据类型相同(或者至少足够相似,以便将一列转换为另一列)。在当前情况下,视图的第一列是publishers or a price_vat,并且除了以下之外没有数据类型定义BLOB可以理解这一点。

如果你真的需要这个作为视图,你可以尝试......

SELECT e.price_vat AS price_vat, 
       NULL        AS publishers,
       ...etc...
       'e'         AS type
    FROM ama_euromedia_products AS e;
UNION ALL
SELECT
     NULL         AS price_vat,
     k.publishers AS publishers, 
     ...etc...
     'k'          AS type
     FROM ama_kosmas_products AS k;

将单个数据类型放入每列中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 视图中的 BLOB 而不是正确的数据 的相关文章

随机推荐

  • 有没有一种将视频从 Android 流式传输到 RTSP 服务器的好方法?

    我已经四处寻找并没有真正发现任何东西 我想通过流将视频从内置摄像头发送到我的 RTSP 服务器 在寻找示例时 我发现 MediaPlayer 的 setDataSource 方法可能只包含服务器上流的位置 我尝试用以下方法来模拟 media
  • 更新关系数据的算法

    已知哪些算法可以在存在数据库约束的情况下通过插入 更新和删除行来执行更新数据库的任务 更具体地说 要删除的行的前图像 要插入的行的后图像以及要更新的行的两个图像都在内存中 这些行可能用于多个表 更新的确切顺序要么是未知的 要么是没有被保留
  • mingw 中的 libpthread 找不到库

    我正在尝试使用 mingw 编译以下程序 include
  • 找到gzip的开头和结尾?

    我有一些文件 有一些随机字节和多个 gzip 文件 如何在某个文件中找到 gzip 流的开头和结尾 gzip 流之间有许多随机字节 所以 基本上我需要找到任何 gzip 文件并从那里获取它 读自RFC 1952 GZIP https www
  • 将 xml 转换为 JSON 的库,反之亦然

    我需要将 xml 中的一种文档格式转换为 JSON 反之亦然 我相信这是一个常见的要求 也许仍然有一个库可以做到这一点 有知道的吗 不是 C 但是纯粹的 XSLT 2 0 实现将 JSON 对象转换为 XML 文档 看看来自FXSL 2 x
  • Docker 构建“无法解析 'archive.ubuntu.com'” apt-get 无法安装任何内容

    我一直在尝试在以前可以工作但现在不再工作的各种文件上运行 Docker 构建 一旦 Docker 文件包含任何用于安装软件的行 它就会失败并显示一条消息 指出找不到该包 RUN apt get y install supervisor no
  • 在 C# 中,如果抛出未处理的异常,Finally 块是否会在 try、catch、finally 中执行? [复制]

    这个问题在这里已经有答案了 另一个面试问题期待真 假答案 但我不太确定 复制 在 NET 中 如果 catch 块中出现错误 finally 总是会被调用怎么办 https stackoverflow com questions 58209
  • python-pandas 和 mysql 等数据库

    Pandas 的文档提供了大量处理以各种格式存储的数据的最佳实践示例 然而 我找不到任何使用 MySQL 等数据库的好例子 任何人都可以向我指出链接或提供一些如何使用转换查询结果的代码片段mysql python有效地处理 Pandas 中
  • 在 ReactJS 中解析 JSON 数据

    我有这样的数据 movies abridged cast characters Dominic Toretto id 162652472 name Vin Diesel characters Brian O Conner id 162654
  • 按周分组并选择本周的记录

    我一直在尝试使用 MySQL 显示每周销售结果表 其中一周的结果应如下所示 Sun Mon Tues Wed Thur Fri Sat 所以我继续使用这个查询 SELECT DATE FORMAT cart calendar datefie
  • 如何使用 Java 连接到 Active Directory

    我使用的是Weblogic Ejb3 0 爪哇1 6 我需要通过 Java 代码访问 Active Directory 我读到了几种方法 Kerberos LDAP 有人可以建议我以舒适的方式这样做吗 我在哪里可以有一些完整的代码示例 谢谢
  • 检查 jolt 中是否为 null 或为空,并输入输入 JSON 中存在的另一个值

    这是我的输入 JSON AddressBilling FirstName Some Name LastName Some Name Address some address AddressShipping FirstName LastNam
  • 纯函数式语言中的高效堆

    作为 Haskell 的练习 我正在尝试实现堆排序 在命令式语言中 堆通常被实现为数组 但这在纯函数式语言中效率非常低 因此 我研究了二进制堆 但到目前为止我发现的所有内容都是从命令式的角度描述它们的 并且所提出的算法很难转化为函数设置 如
  • 访问扩展的background.js的控制台和开发工具

    我刚刚开始使用 Google Chrome 扩展 但似乎无法从后台 js 登录到控制台 当发生错误时 例如 由于语法错误 我也找不到任何错误消息 我的清单文件 name My First Extension version 1 0 mani
  • GWT 中的本机 Javascript 方法

    我的 GWT Java 类之一中有一个本机 Javascript 方法 但我在从本机 Javascript 代码调用我的 Java 方法时遇到问题 我试着跟随this http code google com webtoolkit doc
  • 设置多个 geom_sf 图例的格式

    我正在 ggplot 中处理多个 sf 几何图形 并希望以点 线和正方形 对于多边形 的形式显示图例 然而 geom sf 图例结合了我的几何特征 即结合线和点 如下所示 library ggplot2 library sf poly1 l
  • 如何在 PySpark 中过滤 MapType 中的键?

    给定一个如下的 DataFrame 是否可以过滤掉 Column 的一些键收藏PySpark 中的 MapType StringType StringType True 同时保持架构完整 root id string nullable tr
  • Common Lisp 中的属性列表是否引用某些全局状态?

    下面的代码有z作为局部变量 但它的行为就像全局变量一样 defun foo m let z stuff nil push m getf z stuff print z foo 1 foo 2 foo 3 我希望输出是 STUFF 1 STU
  • GLFW 的线程设置

    我开始使用新的 Lwjgl 3 它使用 GLFW 进行显示 鼠标 键盘处理 我真的很喜欢它 然而今天我碰上了砖头 我有一个简单的渲染动画 但是当我拖动屏幕时 它停止渲染 直到我再次放开 According to http www glfw
  • MySQL 视图中的 BLOB 而不是正确的数据

    我使用创建了一个 MySQL 视图UNION ALL从两个表中 这样我就可以为这些表中的相同数据获得相同的列名 即tbl1 author2 AS translator tbl2 translator AS translator 等等 问题是