SQLite错误的原因:'错误#3132:数据类型不匹配。'在Adobe AIR中

时间:2011-10-20 11:52:07

标签: sql actionscript-3 sqlite air

"SELECT * FROM locations 
 JOIN section_has_location ON locations.location_id = section_has_location.location_id 
 WHERE section_has_location.chapter_id =2 
   AND section_has_location.section_id=2"

我收到错误:

  

SQLError:'错误#3132:数据类型不匹配。',详细信息:'无法将文本值转换为数值。',操作:'执行&#39 39;,detailID:' 2300'

这些是表格:

CREATE TABLE locations ( 
    location_id INTEGER,
    name        TEXT,
    mask_id     TEXT,
    x           REAL,
    y           REAL,
    content     TEXT,
    image_url   TEXT,
    type        TEXT 
);

CREATE TABLE section_has_location ( 
    chapter_id  INTEGER,
    section_id  INTEGER,
    location_id INTEGER 
);

如何修复查询以避免错误?

更新:我导出了所有数据,并导入到一个新的干净数据库中。这似乎解决了这个错误。

2 个答案:

答案 0 :(得分:2)

我刚拿了你的代码,创建了表并运行了查询,它运行正常。

我猜你所做的事情可能是编辑了其中一个列的类型,但表尚未更新,请尝试sp_help tablenamehere或查看对象资源管理器,如果您正在使用管理工作室并检查数据类型是什么列,或者如果可以,可以更容易地删除两个表并重新创建它们

答案 1 :(得分:0)

我知道这是一个老问题,但是今天我找到了一个新的答案。我得到了完全相同的错误,结果是我尝试更新的记录包含一个整数列,该列包含字符串值“ 0”而不是整数0。即使我没有尝试设置该字段,它导致此错误-当我手动修复该列的值时,该错误消失了。

字段包含字符串的原因是用于创建表的DDL将列定义为整数,但是具有DEFAULT'0'子句而不是DEFAULT0。这意味着新插入的行将字符串值放入列。