Python SQL数据类型错误:Can';t在SQL表中输入字符';s柱

Python SQL数据类型错误:Can';t在SQL表中输入字符';s柱,python,mysql,sql,database,Python,Mysql,Sql,Database,如果我输入一个整数而不是一个字符,上面的命令就会起作用。 见: 因此,我检查了该列的数据类型是否为整数,并发现该数据类型没有问题。 以下是我如何找到有关数据类型的信息: mysql> insert into oee (ID_NO,S_NO,START_TIME,END_TIME,PASSFAIL) VALUES (67,85,345643,345633,43); Query OK, 1 row affected (0.02 sec) mysql> select * from oee

如果我输入一个整数而不是一个字符,上面的命令就会起作用。 见:

因此,我检查了该列的数据类型是否为整数,并发现该数据类型没有问题。 以下是我如何找到有关数据类型的信息:

mysql> insert into oee (ID_NO,S_NO,START_TIME,END_TIME,PASSFAIL) VALUES (67,85,345643,345633,43);
Query OK, 1 row affected (0.02 sec)

mysql> select * from oee;
+-------+------+------------+----------+----------+
| ID_NO | S_NO | START_TIME | END_TIME | PASSFAIL |
+-------+------+------------+----------+----------+
|    16 | 1233 | 00:23:23   | 00:01:23 | 2323     |
|    23 | 35   | 00:00:43   | 00:02:34 | 234      |
|    67 | 85   | 34:56:43   | 34:56:33 | 43       |
+-------+------+------------+----------+----------+
3 rows in set (0.00 sec)
错误消息是:

错误1054(42S22):“字段列表”中的未知列“p”


出什么事了

我不是真正的SQL专家,但是由于列的类型是char,所以可以尝试在值周围加引号

mysql> SELECT DATA_TYPE
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE
    ->      TABLE_NAME = 'OEE' AND COLUMN_NAME = 'PASSFAIL';
+-----------+
| DATA_TYPE |
+-----------+
| char      |
+-----------+
1 row in set (0.00 sec)

p
周围加上单引号。如果要插入字符,必须将它们放在单引号中

之前:

插入oee(ID_编号、S_编号、开始时间、结束时间、PASSFAIL)值(67,85345643345633,p)

之后:

插入oee(ID_编号、S_编号、开始时间、结束时间、PASSFAIL)值(67,85345643345633,'p');

在这里,将数据插入表时使用了p而不是“p”。 如果没有声明为P的变量,则不能将P用于insert查询。 这就是为什么可以插入43作为数据。 如果要在表中插入P,请使用下面的查询


插入oee(ID_编号、S_编号、开始时间、结束时间、PASSFAIL)值(67,85345643345633,'p')

插入oee(ID号、S号、开始时间、结束时间、PASSFAIL)值(67,85345643345633,'p')?如果是字符,则应在单引号内<代码>(67,85345643345633,'P')
Oops,非常感谢!我当时很匆忙,没有意识到我犯了这个愚蠢的错误!您还知道在SQL8中更改列数据类型的命令吗?新版本中的语法似乎有很多变化。因此@RomeoSierra挽救了这一天。这个问题可以结束。@KrishnakumarM您还知道在SQL 8中更改列数据类型的命令吗?这是一个单独的问题,您应该单独问。另外,我敢肯定,那里有很多答案和教程,你只需在谷歌上搜索一下就可以找到。:)<代码>ALTER TABLE oee ALTER COLUMN PASSFAIL
在“”中有什么?你能举个例子吗?对不起,我对SQL使用单引号表示字符串文字还真不熟悉。@jarlh我的错,正如我提到的,我不是SQL方面的专家。使用单引号仅仅是一个好的样式选择还是必需的?必需的。双引号用于分隔标识符,例如带有奇数字符的列名。
mysql> SELECT DATA_TYPE
    -> FROM INFORMATION_SCHEMA.COLUMNS
    -> WHERE
    ->      TABLE_NAME = 'OEE' AND COLUMN_NAME = 'PASSFAIL';
+-----------+
| DATA_TYPE |
+-----------+
| char      |
+-----------+
1 row in set (0.00 sec)
insert into oee (ID_NO,S_NO,START_TIME,END_TIME,PASSFAIL) VALUES (67,85,345643,345633,'P');