0

以下CREATE TABLE语句是有效的,并且工作正常:

  CREATE TABLE table1 (
                      'ID' int NOT NULL,
                      'PID' varchar(100) NOT NULL PRIMARY KEY,
                      'A' varchar(100) NOT NULL,
                      'B' varchar(100) NOT NULL,
                      'C' varchar(100),
                      'D' varchar(100),
                      'E' varchar(100)
                      );

但是,对于以下INSERT IGNORE语句,我得到一个无效的 MySQL 语法错误:

INSERT IGNORE INTO table1 ('ID', 'PID', 'A', 'B', 'C', 'D', 'E') 
VALUES (150, 'ABC123', 'ABC', 'ADE', 'ABC', 'ACE', '12345');

我也试过:

INSERT IGNORE INTO table1 (ID, PID, A, B, C, D, E) 
VALUES (150, 'ABC123', 'ABC', 'ADE', 'ABC', 'ACE', '12345');
4

2 回答 2

1

您需要为列名使用反引号而不是单引号:

CREATE TABLE table1 (
`ID` int NOT NULL,
`PID` varchar(100) NOT NULL PRIMARY KEY,
`A` varchar(100) NOT NULL,
`B` varchar(100) NOT NULL,
`C` varchar(100),
`D` varchar(100),
`E` varchar(100)
);

INSERT IGNORE INTO table1 (`ID`, `PID`, `A`, `B`, `C`, `D`, `E`) 
VALUES (150, 'ABC123', 'ABC', 'ADE', 'ABC', 'ACE', '12345');                      

SQL 小提琴演示

于 2013-06-22T16:40:45.000 回答
1

尝试这个 。您的问题是您在 create table 中的列周围使用了单引号,而应该使用反引号:

   CREATE TABLE table1 (
                  `ID` int NOT NULL,
                  `PID` varchar(100) NOT NULL PRIMARY KEY,
                  `A` varchar(100) NOT NULL,
                  `B` varchar(100) NOT NULL,
                  `C` varchar(100),
                  `D` varchar(100),
                  `E` varchar(100)
                  );

  INSERT IGNORE INTO table1 (ID, PID, A, B, C, D, E) 
 VALUES (150, 'ABC123', 'ABC', 'ADE', 'ABC', 'ACE', '12345');

演示

于 2013-06-22T16:40:52.770 回答