创建 MySQL Table 时出现编程错误
Programming Error while creating MySQL Table
@我正在将用户的输入翻译成 MySQL 命令,但它说我的语法有误,不知道如何修复它。本质上,我在 python 中编写了一个程序(不是 python 代码的问题),它能够创建 MySQL tables 并将用户输入转换为 MySQL 命令来创建 table,但我认为我的命令措辞有误,需要有人帮助解释我做错了什么以及我如何修复它或其他方法(没有新的 python 包只是不同 MySQL 命令)。
#Error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''c1', 'c2') VALUES [('r1', 'r2')]' at line 1
#here is what i was collecting in my attempt to fix the bug
'''
ROW SYNTAX: [('r1', 'r2')]
COLUMN SYNTAX: ('c1', 'c2')
MySQL COMMAND: CREATE TABLE test ('c1', 'c2') VALUES [('r1', 'r2')]
'''
#just the values none of the ROW SYNTAX or COLUMN SYNTAX is actually put into the mysql command
我期待它创建 table 具有:
2 列:c1 和 c2
1 行有 2 个值:r1 和 r2
然而,正如我在上面所解释的...它没有。我真的不使用 MySQL 只是 python 所以我可能遗漏了一些我不明白的非常简单或重要的东西。
我看过一些与此类似的示例语法,但我还是不明白。
更新
'''
ROW SYNTAX: [('r1', 'r3'), ('r2', 'r4')]
COLUMN SYNTAX TCOLN: (c1, c2)
COLUMN SYNTAX COLNAMES: (c1 VCHAR(255), c2 VCHAR(255))
CREATE TABLE COMMAND: CREATE TABLE test (c1 VCHAR(255), c2 VCHAR(255));
INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES [('r1', 'r3'), ('r2', 'r4')];
'''
'''
Traceback (most recent call last):
line 472, in cmd_query
raw_as_string=raw_as_string)
_mysql_connector.MySQLInterfaceError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VCHAR(255), c2 VCHAR(255))' at line 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 558, in ctable
cursor.execute(sqlCol) #slqCol is CREATE TABLE test (c1 VCHAR(255), c2 VCHAR(255));
line 266, in execute
raw_as_string=self._raw_as_string)
line 475, in cmd_query
sqlstate=exc.sqlstate)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VCHAR(255), c2 VCHAR(255))' at line 1
'''
感谢您的建议,我现在正在使用 VARCHAR,但我似乎仍然 运行 接近同样的问题
感谢@Martin 解释了什么是 varchar,事实证明 VCHAR 与 VARCHAR 不同(感谢@robsiemb)。现在 table 正在创建但没有将数据值放入? (这可能是一个 python 问题,希望不是)
'''
INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES ('r1', 'r2'),('rr1', 'rr2');
'''
# LATEST UPDATE
New Error when inserting values
```python
#CREATE TABLE COMMAND: CREATE TABLE test (c1 VARCHAR(255), c2 VARCHAR(255));
#INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES (r1,r3),(r2,r4);
'''
Traceback (most recent call last):
line 472, in cmd_query
raw_as_string=raw_as_string)
_mysql_connector.MySQLInterfaceError: Unknown column 'r1' in 'field list'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 563, in ctable
cursor.execute(sqlVal)
line 266, in execute
raw_as_string=self._raw_as_string)
line 475, in cmd_query
sqlstate=exc.sqlstate)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'r1' in 'field list'
'''
Python问题,感谢您回答我的问题!
你所做的问题在这个语句中:
CREATE TABLE test ('c1', 'c2') VALUES [('r1', 'r2')]
这不是有效的 CREATE TABLE
声明。
您似乎在尝试创建 table,然后向其中插入一些值。是这样吗?
如果是这样,这应该分成两个陈述。首先创建 table:
CREATE TABLE test (c1 DATATYPE, c2 DATATYPE);
将 DATATYPE
替换为您正在创建的列的类型(即 INT
、VARCHAR(10)
等)。
其次,将您的值插入 table:
INSERT INTO test (c1, c2) VALUES (r1, r2);
您应该查看 syntax and example 如何创建 MySQL table。
您的 CREATE TABLE 语句有 2 个问题。
- 您需要指定列的类型,例如:
CREATE TABLE test (c1 INTEGER, c2 INTEGER);
- 您不能在创建的同时提供值,但您可以跟进 insert statement:
INSERT INTO test (c1, c2) VALUES (1, 3),(2, 4);
上面给出了一个有两行的table,像这样:
mysql> SELECT * FROM test;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 3 |
| 2 | 4 |
+------+------+
@我正在将用户的输入翻译成 MySQL 命令,但它说我的语法有误,不知道如何修复它。本质上,我在 python 中编写了一个程序(不是 python 代码的问题),它能够创建 MySQL tables 并将用户输入转换为 MySQL 命令来创建 table,但我认为我的命令措辞有误,需要有人帮助解释我做错了什么以及我如何修复它或其他方法(没有新的 python 包只是不同 MySQL 命令)。
#Error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''c1', 'c2') VALUES [('r1', 'r2')]' at line 1
#here is what i was collecting in my attempt to fix the bug
'''
ROW SYNTAX: [('r1', 'r2')]
COLUMN SYNTAX: ('c1', 'c2')
MySQL COMMAND: CREATE TABLE test ('c1', 'c2') VALUES [('r1', 'r2')]
'''
#just the values none of the ROW SYNTAX or COLUMN SYNTAX is actually put into the mysql command
我期待它创建 table 具有:
2 列:c1 和 c2
1 行有 2 个值:r1 和 r2
然而,正如我在上面所解释的...它没有。我真的不使用 MySQL 只是 python 所以我可能遗漏了一些我不明白的非常简单或重要的东西。
我看过一些与此类似的示例语法,但我还是不明白。
更新
'''
ROW SYNTAX: [('r1', 'r3'), ('r2', 'r4')]
COLUMN SYNTAX TCOLN: (c1, c2)
COLUMN SYNTAX COLNAMES: (c1 VCHAR(255), c2 VCHAR(255))
CREATE TABLE COMMAND: CREATE TABLE test (c1 VCHAR(255), c2 VCHAR(255));
INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES [('r1', 'r3'), ('r2', 'r4')];
'''
'''
Traceback (most recent call last):
line 472, in cmd_query
raw_as_string=raw_as_string)
_mysql_connector.MySQLInterfaceError: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VCHAR(255), c2 VCHAR(255))' at line 1
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 558, in ctable
cursor.execute(sqlCol) #slqCol is CREATE TABLE test (c1 VCHAR(255), c2 VCHAR(255));
line 266, in execute
raw_as_string=self._raw_as_string)
line 475, in cmd_query
sqlstate=exc.sqlstate)
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VCHAR(255), c2 VCHAR(255))' at line 1
'''
感谢您的建议,我现在正在使用 VARCHAR,但我似乎仍然 运行 接近同样的问题
感谢@Martin 解释了什么是 varchar,事实证明 VCHAR 与 VARCHAR 不同(感谢@robsiemb)。现在 table 正在创建但没有将数据值放入? (这可能是一个 python 问题,希望不是)
'''
INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES ('r1', 'r2'),('rr1', 'rr2');
'''
# LATEST UPDATE
New Error when inserting values
```python
#CREATE TABLE COMMAND: CREATE TABLE test (c1 VARCHAR(255), c2 VARCHAR(255));
#INSERT TABLE COMMAND: INSERT INTO test (c1, c2) VALUES (r1,r3),(r2,r4);
'''
Traceback (most recent call last):
line 472, in cmd_query
raw_as_string=raw_as_string)
_mysql_connector.MySQLInterfaceError: Unknown column 'r1' in 'field list'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
line 563, in ctable
cursor.execute(sqlVal)
line 266, in execute
raw_as_string=self._raw_as_string)
line 475, in cmd_query
sqlstate=exc.sqlstate)
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column 'r1' in 'field list'
'''
Python问题,感谢您回答我的问题!
你所做的问题在这个语句中:
CREATE TABLE test ('c1', 'c2') VALUES [('r1', 'r2')]
这不是有效的 CREATE TABLE
声明。
您似乎在尝试创建 table,然后向其中插入一些值。是这样吗?
如果是这样,这应该分成两个陈述。首先创建 table:
CREATE TABLE test (c1 DATATYPE, c2 DATATYPE);
将 DATATYPE
替换为您正在创建的列的类型(即 INT
、VARCHAR(10)
等)。
其次,将您的值插入 table:
INSERT INTO test (c1, c2) VALUES (r1, r2);
您应该查看 syntax and example 如何创建 MySQL table。
您的 CREATE TABLE 语句有 2 个问题。
- 您需要指定列的类型,例如:
CREATE TABLE test (c1 INTEGER, c2 INTEGER);
- 您不能在创建的同时提供值,但您可以跟进 insert statement:
INSERT INTO test (c1, c2) VALUES (1, 3),(2, 4);
上面给出了一个有两行的table,像这样:
mysql> SELECT * FROM test;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 3 |
| 2 | 4 |
+------+------+