在开始测试iOS自动更新购买之前,我需要准备我的服务器数据库。我的问题很简单。我只想知道我应该在数据库中创建varchar字段的大小。
答案 0 :(得分:13)
我使用varchar(4096)来存储我的base64编码收据。
但说实话,我在官方文件(或其他任何地方)上找不到关于收据长度的任何内容。我找到on Apple's docs的唯一方法是收据内容/格式可能会发生变化:
商店收据的内容和格式是私密的,可能会有变化。您的应用程序不应尝试直接解析收据数据。使用此处描述的机制验证收据并检索其中存储的信息。
所以可能去文本而不是varchar真的是最好的选择。
答案 1 :(得分:6)
receipt-data
可能会因为包含较旧的订阅信息而变得更大。
实际上,典型的大小可能不到10KB。但由于反复创建新订阅,我在自动化测试中看到了大于500KB的收据数据。
最好使用varchar(max)或不受限制的文本。
答案 2 :(得分:1)
在MySQL中,使用容量为16 MB的 MEDIUMTEXT 是安全的。
我当时使用的是TEXT,但在某一点上不合适。
TEXT仅具有64kb的容量,但是在重复交易后,收据大小更有可能超过此大小。我只是在沙盒模式下进行许多事务后才观察到这一点。
TINYTEXT:255个字符-255个B
文本65,535字节-64kb
MEDIUMTEXT:16,777,215-16 MB
GBTEXT:65,535个字符-64 MB
KBLONGTEXT:4,294,967,295个字符-4 GB
答案 3 :(得分:0)
做完一些简单的数学运算后,我发现使用 MEDIUMTEXT 是安全的,因为每个收据大小每笔交易都会增加〜2KB,因此您需要进行800多次交易才能最大程度地利用尺寸。 因此,考虑到10年的非常安全的使用期限,它每月需要进行80笔以上的交易,或者每月大约需要7-8笔交易,而在大多数用例中并不是这种情况。
答案 4 :(得分:0)
可以使用jsonb
存储base64。它最多可以容纳1MB。