简单 CREATE TABLE 命令中的奇怪语法错误 - PostgreSQL、MySQL 和 SQLite
Strange syntax error in simple CREATE TABLE command - PostgreSQL, MySQL, & SQLite
我遇到 PostgreSQL、MySQL 和 SQLite 的语法错误,我不明白。当相同的 CREATE TABLE 命令是来自 Python 的 运行 并且作为 pgAdmin4 和 MySQL WorkBench 中的查询时,它会发生。使用 MS SQL Server Management Studio,相同的命令在 SQL 服务器上完美运行。
命令是:
create table asDataSpecs ( NumField1 integer, CharField1 char(30), CharField2 char(30) )
pgAdmin4 显示错误消息:
LINE 1: ...e asDataSpecs ( NumField1 integer, CharField1 char(30), Char...
^
SQL state: 42601
Character: 62
MySQL 在同一点生成“错误代码:1064”:
错误代码:1064。您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1
行的 '(30), CharField2 char(30) )' 附近使用的正确语法
PostgreSQL & MySQL 当此命令在 Python 中为 运行 时,可以理解地在同一点失败 - 作为连接到的游标上的 .execute()适当的后端和数据库。
SQLite(运行 在同一 Python 程序中使用 .execute())可能在同一点产生错误:
尝试创建 'asDataSpecs' table 时失败 'Try'
在“(”附近:语法错误
为什么 PostgreSQL、MySQL 和 SQLite 接受“整数”字段,但拒绝第一个“字符”字段 - 但 MS SQL服务器运行还好吗?
(我不认为这是一个凭据问题,因为我成功地使用具有相同凭据的 ODBC 在同一数据库中创建其他 tables - 在所有四个后端中。我会期待不同的错误消息,如果凭据是问题 - 它不应该接受数字字段。)
就是这样 - 时髦的隐藏角色。 (字段名称和数据类型之间有一些高位 ASCII 字符,而不是正常的 space (ASCII 32)。)
所有平台现在都按预期工作,包括 Python 程序和各自的后端管理控制台。
对于任何感兴趣的人,即使 NotePad++ 也将其显示为 space。但基本的Windows记事本揭开了谜底。
再次感谢“粘位”。
我遇到 PostgreSQL、MySQL 和 SQLite 的语法错误,我不明白。当相同的 CREATE TABLE 命令是来自 Python 的 运行 并且作为 pgAdmin4 和 MySQL WorkBench 中的查询时,它会发生。使用 MS SQL Server Management Studio,相同的命令在 SQL 服务器上完美运行。
命令是:
create table asDataSpecs ( NumField1 integer, CharField1 char(30), CharField2 char(30) )
pgAdmin4 显示错误消息:
LINE 1: ...e asDataSpecs ( NumField1 integer, CharField1 char(30), Char...
^
SQL state: 42601
Character: 62
MySQL 在同一点生成“错误代码:1064”: 错误代码:1064。您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1
行的 '(30), CharField2 char(30) )' 附近使用的正确语法PostgreSQL & MySQL 当此命令在 Python 中为 运行 时,可以理解地在同一点失败 - 作为连接到的游标上的 .execute()适当的后端和数据库。
SQLite(运行 在同一 Python 程序中使用 .execute())可能在同一点产生错误: 尝试创建 'asDataSpecs' table 时失败 'Try' 在“(”附近:语法错误
为什么 PostgreSQL、MySQL 和 SQLite 接受“整数”字段,但拒绝第一个“字符”字段 - 但 MS SQL服务器运行还好吗?
(我不认为这是一个凭据问题,因为我成功地使用具有相同凭据的 ODBC 在同一数据库中创建其他 tables - 在所有四个后端中。我会期待不同的错误消息,如果凭据是问题 - 它不应该接受数字字段。)
就是这样 - 时髦的隐藏角色。 (字段名称和数据类型之间有一些高位 ASCII 字符,而不是正常的 space (ASCII 32)。)
所有平台现在都按预期工作,包括 Python 程序和各自的后端管理控制台。
对于任何感兴趣的人,即使 NotePad++ 也将其显示为 space。但基本的Windows记事本揭开了谜底。
再次感谢“粘位”。