一些人已经报告过,带引号的字符串中的分号会导致SQL错误.
我当前的设置是一个SQLite 3数据库,我正在尝试执行插入,我的一个新数据的字段包含一些HTML,作为其中的一部分,我有以分号结尾的html实体,例如 - è
我正在尝试的一个简单的精简示例查询如下:
insert into my_table (some_field) values ('Hello; world');
Run Code Online (Sandbox Code Playgroud)
而我得到的错误是:
1)
insert into my_table (some_field) values ('Hello
Error : unrecognized token: "'Hello"
Run Code Online (Sandbox Code Playgroud)
2)
world')
Error : near "world": syntax error
Run Code Online (Sandbox Code Playgroud)
因此,SQL引擎显然会看到分号Hello; world并将其解释为语句的结尾.我已经让其他几个人测试了这个,有些人在使用SQLite GUI时会发现它让我相信它只是一个需要改变的SQL设置.
似乎至少在默认情况下,SQL引擎只需要半冒号来结束语句,有人知道如何更改它吗?
这很奇怪,请尝试以下查询:
DROP TABLE IF EXISTS djp;
CREATE Table djp ("mykey" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "name" VARCHAR(25));
INSERT INTO djp (name) VALUES ('This is test two; OK?');
SELECT * FROM djp;
Run Code Online (Sandbox Code Playgroud)
请注意,如果我插入时未指定要插入的字段(使我的自动增量有点无意义),则不会发生错误...
INSERT INTO djp VALUES (1, 'This is test two; OK?');
Run Code Online (Sandbox Code Playgroud)
正如评论中所述,我在独立sqlite3.exe引擎中运行了您的代码示例,并且它像任何其他文本一样执行(带或不带分号)。既然你指出了INSERT INTO Foo VALUES ()和INSERT INTO Foo (column) VALUES ()怪癖,我同意这不是你的代码的问题,而是 Navicat 的一个错误。
| 归档时间: |
|
| 查看次数: |
6741 次 |
| 最近记录: |