0

私はテーブルを持っています

CREATE TABLE IF NOT EXISTS `employee` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) DEFAULT NULL,
`SALARY` int(11) DEFAULT NULL,
`DEPT` varchar(10) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

上記のテーブルに値を挿入すると、以下のようにエラーがスローされます

INSERT INTO employee ('NAME', 'SALARY', 'DEPT') VALUES ('user test', 10000, 'ADMIN');
4

2 に答える 2

6

列名の一重引用符を削除します。

INSERT INTO employee (NAME, SALARY, DEPT) VALUES ('user test', 10000, 'ADMIN');

一重引用符は文字列リテラル用で、列名は識別子です。列は文字列リテラルではなく識別子を想定しているため、サーバーは例外をスローします。識別子を一重引用符で囲むと、文字列に変換されます。

列名とテーブル名が mysql 予約済みキーワード リストのキーワードの 1 つである場合は、バッククォートを使用して区切ることができます。

于 2013-03-25T09:45:13.723 に答える
2

これを変える

INSERT INTO employee ('NAME', 'SALARY', 'DEPT') VALUES ('user test', 10000, 'ADMIN');

INSERT INTO employee (`NAME`, `SALARY`, `DEPT`) VALUES ('user test', 10000, 'ADMIN');
于 2013-03-25T09:46:10.197 に答える