qiyadeng

          專注于Java示例及教程
          posts - 84, comments - 152, trackbacks - 0, articles - 34

          注意MySQL的保留字陷阱

          Posted on 2007-04-22 23:34 qiyadeng 閱讀(2886) 評論(1)  編輯  收藏

             今天在調(diào)試程序中發(fā)現(xiàn)類似下面這種錯誤

          - SQL Error: 1064, SQLState: 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 'REQUIRE, PLAN_DATE, COMPILE, AUDITOR, AGREE_PERSON, AGREE_DATE, ADD_BY, MOD_BY, ' at line 1- Could not synchronize database state with sessionorg.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update


          找了半天也沒發(fā)現(xiàn)是什么錯誤,搜索多數(shù)認為是 hbm.xml中catalog中引起的問題,但我檢查了發(fā)現(xiàn)不是配置文件引起的問題。后來聯(lián)想到是不是MySQL的保留字的問題,找到http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html#reserved-words,果然是。
          MySQL的保留字有以下這些,使用中需要注意。
          ADD ALL ALTER
          ANALYZE AND AS
          ASC ASENSITIVE BEFORE
          BETWEEN BIGINT BINARY
          BLOB BOTH BY
          CALL CASCADE CASE
          CHANGE CHAR CHARACTER
          CHECK COLLATE COLUMN
          CONDITION CONNECTION CONSTRAINT
          CONTINUE CONVERT CREATE
          CROSS CURRENT_DATE CURRENT_TIME
          CURRENT_TIMESTAMP CURRENT_USER CURSOR
          DATABASE DATABASES DAY_HOUR
          DAY_MICROSECOND DAY_MINUTE DAY_SECOND
          DEC DECIMAL DECLARE
          DEFAULT DELAYED DELETE
          DESC DESCRIBE DETERMINISTIC
          DISTINCT DISTINCTROW DIV
          DOUBLE DROP DUAL
          EACH ELSE ELSEIF
          ENCLOSED ESCAPED EXISTS
          EXIT EXPLAIN FALSE
          FETCH FLOAT FLOAT4
          FLOAT8 FOR FORCE
          FOREIGN FROM FULLTEXT
          GOTO GRANT GROUP
          HAVING HIGH_PRIORITY HOUR_MICROSECOND
          HOUR_MINUTE HOUR_SECOND IF
          IGNORE IN INDEX
          INFILE INNER INOUT
          INSENSITIVE INSERT INT
          INT1 INT2 INT3
          INT4 INT8 INTEGER
          INTERVAL INTO IS
          ITERATE JOIN KEY
          KEYS KILL LABEL
          LEADING LEAVE LEFT
          LIKE LIMIT LINEAR
          LINES LOAD LOCALTIME
          LOCALTIMESTAMP LOCK LONG
          LONGBLOB LONGTEXT LOOP
          LOW_PRIORITY MATCH MEDIUMBLOB
          MEDIUMINT MEDIUMTEXT MIDDLEINT
          MINUTE_MICROSECOND MINUTE_SECOND MOD
          MODIFIES NATURAL NOT
          NO_WRITE_TO_BINLOG NULL NUMERIC
          ON OPTIMIZE OPTION
          OPTIONALLY OR ORDER
          OUT OUTER OUTFILE
          PRECISION PRIMARY PROCEDURE
          PURGE RAID0 RANGE
          READ READS REAL
          REFERENCES REGEXP RELEASE
          RENAME REPEAT REPLACE
          REQUIRE RESTRICT RETURN
          REVOKE RIGHT RLIKE
          SCHEMA SCHEMAS SECOND_MICROSECOND
          SELECT SENSITIVE SEPARATOR
          SET SHOW SMALLINT
          SPATIAL SPECIFIC SQL
          SQLEXCEPTION SQLSTATE SQLWARNING
          SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
          SSL STARTING STRAIGHT_JOIN
          TABLE TERMINATED THEN
          TINYBLOB TINYINT TINYTEXT
          TO TRAILING TRIGGER
          TRUE UNDO UNION
          UNIQUE UNLOCK UNSIGNED
          UPDATE USAGE USE
          USING UTC_DATE UTC_TIME
          UTC_TIMESTAMP VALUES VARBINARY
          VARCHAR VARCHARACTER VARYING
          WHEN WHERE WHILE
          WITH WRITE X509
          XOR YEAR_MONTH ZEROFILL

          Feedback

          # re: 注意MySQL的保留字陷阱  回復(fù)  更多評論   

          2007-04-23 01:15 by 山風小子
          這個問題我也遇到過,花了好長時間才發(fā)現(xiàn)問題的根源的 :)

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 东源县| 汉寿县| 福泉市| 遂川县| 康乐县| 诏安县| 股票| 赣榆县| 海南省| 普定县| 靖州| 杭锦旗| 林州市| 宁海县| 乌拉特中旗| 西吉县| 墨竹工卡县| 晋州市| 云林县| 天门市| 枣阳市| 孙吴县| 富川| 济源市| 孟连| 平舆县| 西宁市| 高州市| 油尖旺区| 四川省| 斗六市| 莱州市| 嘉黎县| 冀州市| 修武县| 邵东县| 于田县| 股票| 红桥区| 泰顺县| 新巴尔虎右旗|