1

アプリケーションを実行していますが、SQL テーブルの 1 つで、"`" 文字がフィールド名を囲んでいない限りクエリを実行しません。なぜこれが必要なのかわかりません??

例えば

INSERT INTO doc_elements (doc_pdf_id, element_type, class, id, order, create_timestamp) VALUES ('37', 'p', 'ft2', '0', '3', '1337130927')

動作しませんが、これは動作します:

INSERT INTO `doc_elements`(`doc_pdf_id`, `element_type`, `class`, `id`, `order`, `create_timestamp`) VALUES ('37', 'p', 'ft2', '0', '3', '1337130927')

正しい sql ステートメントを指定するために、フィールド名を "`" で囲む必要があるのはデータベース内の唯一のテーブルです。

別のテーブルでこれを完全に実行できます。

INSERT INTO doc_pdfs (act_id, upload_stamp) VALUES ('xxxxx12234', '1337130927')

問題のテーブルのテーブル構造:

CREATE TABLE IF NOT EXISTS `doc_elements` (
`doc_elements_id` int(15) NOT NULL auto_increment,
`doc_pdf_id` int(11) NOT NULL,
`element_type` varchar(20) NOT NULL,
`class` varchar(100) default NULL,
`id` varchar(100) default NULL,
`order` int(11) NOT NULL,
`parent_element` int(15) default NULL,
`active` tinyint(1) NOT NULL default '1',
`create_timestamp` int(20) NOT NULL,
`sys_stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY  (`doc_elements_id`),
KEY `doc_pdf_id` (`doc_pdf_id`),
KEY `parent_element` (`parent_element`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

なぜこれが起こっているのかについてのアイデアはありますか?

4

1 に答える 1

7

ORDERはMySQLの予約語です。

于 2012-05-16T01:49:58.667 に答える