SQLite 插入中的 NS_ERROR_FAILURE
Posted
技术标签:
【中文标题】SQLite 插入中的 NS_ERROR_FAILURE【英文标题】:NS_ERROR_FAILURE in SQLite insert 【发布时间】:2014-11-19 19:43:12 【问题描述】:我刚买了一个 Kobo 电子阅读器,它迫使我在电子阅读器功能之前在他们的网站上注册。看到我是一个隐私原教旨主义者,我拒绝注册阅读几本书,所以我开始寻找替代方案。这把我带到了this blogpost,它建议在电子阅读器上打开 SQLite DB 并手动插入具有以下插入的用户(为便于阅读而格式化):
INSERT INTO user (
UserID
,UserKey
,UserDisplayName
,UserEmail
,___DeviceID
,HasMadePurchase
)
VALUES (
‘5b8b0d65-b50f-4460-b6df-aca5e64f4882’
,’626d73ed-8382-4c1d-9750-cfe741c6e773’
,’a_name’
,’an_email_address’
,’01:23:45:67:89:ab’
,’TRUE’
);
所以我找到了 sqlite 数据库并运行了查询,但我收到以下错误消息
SQLiteManager: Likely SQL syntax error: INSERT INTO user(UserID,UserKey,UserDisplayName,UserEmail,___DeviceID,HasMadePurchase) VALUES(‘5b8b0d65-b50f-4460-b6df-aca5e64f4882’,’626d73ed-8382-4c1d-9750-cfe741c6e773’,’a_name’,’an_email_address’,’01:23:45:67:89:ab’,’TRUE’);
[ unrecognized token: "4c1d" ]
Exception Name: NS_ERROR_FAILURE
Exception Message: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [mozIStorageConnection.createStatement]
我查看了用户表的结构,它(如下所示)与查询略有不同。
CREATE TABLE user (
UserID TEXT NOT NULL
,UserKey TEXT NOT NULL
,UserDisplayName TEXT
,UserEmail TEXT
,___DeviceID TEXT
,FacebookAuthToken TEXT <= missing from query
,HasMadePurchase BIT DEFAULT FALSE
,IsOneStoreAccount BIT DEFAULT FALSE <= missing from query
,IsChildAccount BIT DEFAULT FALSE <= missing from query
,PRIMARY KEY (UserID)
)
如您所见,数据库中有三列不在查询中。我不认为这是错误的根源。
有人知道错误的含义以及如何解决错误吗?欢迎所有提示!
【问题讨论】:
使用虚假身份/预付信用卡创建帐户不是更简单(并且不违反 TOS)吗?除非您将其作为个人挑战。 :) @bd33 - 确实是后者;个人挑战.. :) 基于它抛出的错误引用字符串的中间部分的事实......尝试双引号(“”)而不是单引号('')? @bd33 - 太棒了,结合使用反引号 (`) 将所有列名括起来使它工作并且现在启动了。我现在只需要找出如何在没有 Kobo 软件的情况下向其中添加书籍.. 但是谢谢一百万! (ps:如果您将评论添加为答案,我可以接受。) 【参考方案1】:将 VALUES 部分的单引号更改为双引号 - 错误引用了字符串的中间部分。 除此之外,将列值括在反引号中,然后一切正常。
【讨论】:
以上是关于SQLite 插入中的 NS_ERROR_FAILURE的主要内容,如果未能解决你的问题,请参考以下文章