qiyadeng

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

          注意MySQL的保留字陷阱

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

             今天在調試程序中發現類似下面這種錯誤

          - 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


          找了半天也沒發現是什么錯誤,搜索多數認為是 hbm.xml中catalog中引起的問題,但我檢查了發現不是配置文件引起的問題。后來聯想到是不是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的保留字陷阱  回復  更多評論   

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

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


          網站導航:
           
          主站蜘蛛池模板: 中西区| 湖南省| 太湖县| 庆云县| 肥城市| 漳浦县| 万宁市| 阿克苏市| 德安县| 崇州市| 阿图什市| 固阳县| 湖南省| 扎兰屯市| 资兴市| 镇远县| 阜康市| 安康市| 香格里拉县| 望都县| 镇巴县| 蒙自县| 瑞金市| 昔阳县| 富民县| 长垣县| 长宁区| 个旧市| 无锡市| 富宁县| 虹口区| 东安县| 蓝田县| 襄汾县| 荥经县| 长武县| 工布江达县| 新建县| 孟津县| 江津市| 大关县|