"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
);
如何修复查询以避免错误?
更新:我导出了所有数据,并导入到一个新的干净数据库中。这似乎解决了这个错误。
答案 0 :(得分:2)
我刚拿了你的代码,创建了表并运行了查询,它运行正常。
我猜你所做的事情可能是编辑了其中一个列的类型,但表尚未更新,请尝试sp_help tablenamehere或查看对象资源管理器,如果您正在使用管理工作室并检查数据类型是什么列,或者如果可以,可以更容易地删除两个表并重新创建它们
答案 1 :(得分:0)
我知道这是一个老问题,但是今天我找到了一个新的答案。我得到了完全相同的错误,结果是我尝试更新的记录包含一个整数列,该列包含字符串值“ 0”而不是整数0。即使我没有尝试设置该字段,它导致此错误-当我手动修复该列的值时,该错误消失了。
字段包含字符串的原因是用于创建表的DDL将列定义为整数,但是具有DEFAULT'0'子句而不是DEFAULT0。这意味着新插入的行将字符串值放入列。