mysql - 图片使用Postgres和Xojo

标签 mysql image postgresql realbasic xojo

我已经从 MySQL 数据库转换为 Postgres。在转换过程中,Postgres中的图片列被创建为bytea。

此 Xojo 代码适用于 MySQL 但不适用于 Postgres。

Dim mImage as Picture

mImage = rs.Field("Picture").PictureValue

有什么想法吗?

最佳答案

我不知道这个特定问题,但您可以通过以下方法自行了解,也许:

图片在数据库中存储为 BLOB。现在,这意味着该列也必须声明为 BLOB(或类似的二进制类型)。如果它不小心被标记为 TEXT,只要数据库没有通过其他方式导出,这就可以工作。也就是说,只要您的 Xojo 代码使用 PictureValue 函数读取和写入记录,它就会负责将数据保持为 BLOB 形式。但是,如果您随后转换到另一个数据库,BLOB 数据将被读取为文本,并且在该过程中它可能会被破坏。

因此,让我们知道您如何转换数据库可能很重要。您是否执行了导出为 SQL 命令,然后通过再次运行这些命令将其导入到 Postgres 中?你还有导出文件吗?如果是这样,找到一个包含图片数据的记录,看看该数据是否以:x'开头,然后包含十六进制字节代码,例如x'45FE1200...等等。如果不是,那是我怀疑的另一个指标。

因此,请先检查旧数据库中图片列的类型。如果指定二进制数据类型,则上述内容可能不适用。

接下来,您可以查看 Xojo 读取的实际二进制数据。为此,获取 BlobValue 而不是 PictureValue,并将其存储在 MemoryBlock 中。对单个图片执行相同的操作,同时使用旧数据库和新数据库。内存块应包含相同的字节。如果不是,则表明数据未正确传输。为什么?好吧,这取决于您如何转换它。

关于mysql - 图片使用Postgres和Xojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22506663/

相关文章:

java - 从 JPG 图像中读取文本数据

c# - 在 .NET 中提取有关 PNG 的图像信息

sql - 从 pgAdmin 生成的 CREATE 语句中的 GRANT

php - 如何处理从 pgsql 返回的数组?

java/mysql/慢

php - 2个条件适用的sql更新语句

mysql - Mysql 删除数据库内容最快的方法是什么?

mysql - 使用 xtrabackup 恢复 mysql 的物理备份

javascript - Canvas2Image.js 通过元素点击将 base64 图像保存为 png

sql - 分组并将多行合并为一行