在Windows PowerShell中执行SQLite脚本报错:no such column: ostrich
解决SQLite执行CREATE TABLE时的"no such column"错误
问题分析
从错误提示来看,SQLite解析到SELECT "ostrich"时误将ostrich识别为列名而非字符串常量,且前面的"crocodile"被截断为"le",这大概率是文件编码问题导致的——Windows下常见的UTF-8带BOM编码会被SQLite命令行工具误解析,破坏了SQL语句的结构。
解决步骤
1. 修正SQL文件编码
用记事本或其他文本编辑器打开ex.sql:
- 选择「另存为」,在编码下拉框中选择UTF-8(无BOM)(部分编辑器标注为「UTF-8 without BOM」)
- 覆盖原文件后重新执行
sqlite3 -init ex.sql命令
2. 换用管道传递SQL内容(替代-init参数)
如果不想修改文件编码,可在PowerShell中执行以下命令绕过编码问题:
Get-Content ex.sql -Encoding UTF8 | sqlite3 your_database.db
(将your_database.db替换为你实际要操作的数据库文件名,若文件不存在会自动创建)
3. 确认SQL语句正确性
你的SQL代码本身无语法错误,修正编码或换用管道执行后,以下语句可正常创建animals表:
CREATE TABLE animals AS SELECT "dog" AS name, "20" AS weight, 4 AS legs UNION SELECT "cat" , "10" , 4 UNION SELECT "penguin" , "300" , 2 UNION SELECT "t-rex" , "12000" , 2 UNION SELECT "parrot" , "6" , 2 UNION SELECT "crocodile" , "10" , 4 UNION SELECT "ostrich" , "500" , 2;
内容的提问来源于stack exchange,提问作者maple0325
相关产品推荐
相关产品推荐

