当前位置:首页 > 数据库 > SQlite

Linux和OS X上的Sqlite数据文件不兼容?

我创建一个表并通过在ARM Linux机器上执行以下命令来填充它

~ # sqlite3 /mnt/mmc/test.db
SQLite version 3.6.12
sqlite> create table a (d);
sqlite> insert into a values (1.5);
sqlite> select * from a;
1.5

然后,我将文件传输到Mac并执行以下命令

themac:~ me$sqlite3 test.db 
SQLite version 3.6.12
sqlite> select * from a;
5.30239915051991e-315

哇我以为数据文件是平台无关的.

解决方法:

我对SQLite没有特别的了解,但这表明存在一个问题,其中交换了64位IEEE 754格式的double的两个32位字,如您在本示例中所看到的(在x86上使用gcc运行)机):

$cat test.c
#include <stdio.h>

int main(void)
{
    union {
        double d;
        unsigned long long ull;
    } u;

    u.d = 1.5;
    printf("%016llxn", u.ull);

    u.d = 5.30239915051991e-315;
    printf("%016llxn", u.ull);

    return 0;
}
$gcc -Wall -o test test.c
$./test
3ff8000000000000
000000003ff80000
$

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!