我已经将MySQL数据库转换为Postgres。在转换过程中,Postgres中的图片列被创建为bytea。
这段Xojo代码可以在MySQL中运行,但不能在Postgres中运行。
Dim mImage as Picture
mImage = rs.Field("Picture").PictureValue有什么想法吗?
发布于 2014-03-19 22:15:58
我不知道这个特定的问题,但以下是你可以做的事情来找出自己,也许:
图片作为BLOB存储在数据库中。现在,这意味着该列还必须声明为BLOB (或类似的二进制类型)。如果它被意外地标记为文本,只要数据库没有通过其他方式导出,它就会起作用。也就是说,只要只有您的Xojo代码使用PictureValue函数对记录进行读写,它就会负责以BLOB形式保存数据。但是,如果您随后转换到另一个数据库,BLOB数据将被读取为文本,在此过程中,它可能会被损坏。
因此,让我们知道你是如何转换数据库的可能是相关的。您是否执行了导出为SQL命令,然后通过再次运行这些命令将其导入Postgres?您还保留着导出文件吗?如果是这样,找到一个包含图片数据的记录,并查看该数据是否以: x‘开头,然后包含十六进制字节码,例如x'45FE1200...诸若此类。如果不是,那就是我怀疑的另一个指标。
因此,请先检查旧数据库中的Picture列的类型。如果指定的是二进制数据类型,则上面的说明可能不适用。
接下来,您可以查看Xojo读取的实际二进制数据。为此,请获取BlobValue而不是PictureValue,并将其存储在MemoryBlock中。对单个图片执行相同的操作,对旧数据库和新数据库都是如此。内存块应该包含相同的字节。如果不是,这将表明数据传输不正确。为什么?好吧,这取决于你如何转换它。
https://stackoverflow.com/questions/22506663
复制相似问题