`
cheng888qi
  • 浏览: 284650 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

[总结]字段名为mysql保留字的表的插入问题

    博客分类:
  • java
阅读更多
今天在用mysql的时候遇到一个保留字的问题,自己总结下,呵呵。
问题环境:
mysql  版本 5.0.41-log
eclipse 版本 3.3.0
hibernate 版本 3.0
 
数据库表名user
+------+---------+------------+-------------+
| userid | username | password | ssl |
+------+---------+------------+-------------+
问题现象:
执行代码
java 代码
  1. session.save(user)         //user为user数据表的映射对象  
发生异常。
异常信息:
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 'ssl) values(4, '3', '3', 2)' at line 1
问题原因:
通过查找相关资料,发现ssl为mysql的保留字,不能像普通字段那样进行数据库操作。
问题解决方法:
1. 将
java 代码
  1. session.save(user);   
改为 
  
java 代码
  1. session.createSQLQuery("insert  into user(userid, username, password, `ssl`) values(" + user.getUserid() +", "+ user.getUsername +", "+ user.getPassword +", " + user.getSsl() + ")");   
  2. query.executeUpdate();   
 
2.将user表对应的映射文件User.hbm.xml中的ssl的信息改为
      
xml 代码
  1. <property name="ssl" column="`SSL`" type="java.lang.Long" not-null="false" length="1" />  

 注意:ssl旁边的不是单引号" '  "而是" `  ",键盘最左上角的那个,呵呵!

附:mysql保留字表和相关信息(转载)
尝试使用一个识别符,例如使用嵌入式MySQL数据类型或函数名作为表名或列名,例如TIMESTAMP或GROUP,会造成一个常见问题。允许你这样操作(例如,ABS可以作为一个列名)。但是,默认情况下,在数调用中在函数名和后面的‘(’字符之间不允许有空格。该要求使函数调用与列名引用不同。
该行为的不利结果是在某些上下文中省略一个空格会使识别符解释为函数名。例如,该语句合法:
mysql> CREATE TABLE abs (val INT);但省略abs后面的空格会造成语法错误,因为省略后该语句好像要调用ABS()函数:
mysql> CREATE TABLE abs(val INT);如果SQL服务器模式包括IGNORE_SPACE模式值,服务器允许函数调用时在函数名和后面的‘(’字符之间有空格。这样使函数名被视为保留字。结果是,与函数名相同的识别符必须按照9.2节,“数据库、表、索引、列和别名”中所描述的引起来。SQL服务器模式按照5.3.2节,“SQL服务器模式”中所描述的进行控制。
限定名中句点后面的字必须为一个识别符,因此不需要将它引起来,即使它是一个保留字。
在MySQL中,下表中的字显式被保留。其中大多数字进制被标准SQL用作列名和/或表名(例如,GROUP)。少数被保留了,因为MySQL需要它们,(目前)使用yacc解析程序。保留字被引起来后可以用作识别符 
 
  1. ADD                     ALL                       ALTER   
  2. ANALYZE                 AND                       AS   
  3. ASC                     ASENSITIVE                BEFORE   
  4. BETWEEN                 BIGINT                    BINARY   
  5. BLOB                    BOTH                      BY   
  6. CALL                    CASCADE                   CASE   
  7. CHANGE                  CHAR                      CHARACTER   
  8. CHECK                   COLLATE                   COLUMN   
  9. CONDITION               CONNECTION                CONSTRAINT   
  10. CONTINUE                CONVERT                   CREATE   
  11. CROSS                   CURRENT_DATE              CURRENT_TIME   
  12. CURRENT_TIMESTAMP       CURRENT_USER              CURSOR   
  13. DATABASE                DATABASES                 DAY_HOUR   
  14. DAY_MICROSECOND         DAY_MINUTE                DAY_SECOND   
  15. DEC                     DECIMAL                   DECLARE   
  16. DEFAULT                 DELAYED                   DELETE   
  17. DESC                    DESCRIBE                  DETERMINISTIC   
  18. DISTINCT                DISTINCTROW               DIV   
  19. DOUBLE                  DROP                      DUAL   
  20. EACH                    ELSE                      ELSEIF   
  21. ENCLOSED                ESCAPED                   EXISTS   
  22. EXIT                    EXPLAIN                   FALSE   
  23. FETCH                   FLOAT                     FLOAT4   
  24. FLOAT8                  FOR                       FORCE   
  25. FOREIGN                 FROM                      FULLTEXT   
  26. GOTO                    GRANT                     GROUP   
  27. HAVING                  HIGH_PRIORITY             HOUR_MICROSECOND   
  28. HOUR_MINUTE             HOUR_SECOND               IF   
  29. IGNORE                  IN                        INDEX   
  30. INFILE                  INNER                     INOUT   
  31. INSENSITIVE             INSERT                    INT   
  32. INT1                    INT2                      INT3   
  33. INT4                    INT8                      INTEGER   
  34. INTERVAL                INTO                      IS   
  35. ITERATE                 JOIN                      KEY   
  36. KEYS                    KILL                      LABEL   
  37. LEADING                 LEAVE                     LEFT   
  38. LIKE                    LIMIT                     LINEAR   
  39. LINES                   LOAD                      LOCALTIME   
  40. LOCALTIMESTAMP          LOCK                      LONG   
  41. LONGBLOB                LONGTEXT                  LOOP   
  42. LOW_PRIORITY            MATCH                     MEDIUMBLOB   
  43. MEDIUMINT               MEDIUMTEXT                MIDDLEINT   
  44. MINUTE_MICROSECOND      MINUTE_SECOND             MOD   
  45. MODIFIES                NATURAL                   NOT   
  46. NO_WRITE_TO_BINLOG      NULL                      NUMERIC   
  47. ON                      OPTIMIZE                  OPTION   
  48. OPTIONALLY              OR                        ORDER   
  49. OUT                     OUTER                     OUTFILE   
  50. PRECISION               PRIMARY                   PROCEDURE   
  51. PURGE                   RAID0                     RANGE   
  52. READ                    READS                     REAL   
  53. REFERENCES              REGEXP                    RELEASE   
  54. RENAME                  REPEAT                    REPLACE   
  55. REQUIRE                 RESTRICT                  RETURN   
  56. REVOKE                  RIGHT                     RLIKE   
  57. SCHEMA                  SCHEMAS                   SECOND_MICROSECOND   
  58. SELECT                  SENSITIVE                 SEPARATOR   
  59. SET                     SHOW                      SMALLINT   
  60. SPATIAL                 SPECIFIC                  SQL   
  61. SQLEXCEPTION            SQLSTATE                  SQLWARNING   
  62. SQL_BIG_RESULT          SQL_CALC_FOUND_ROWS       SQL_SMALL_RESULT   
  63. SSL                     STARTING                  STRAIGHT_JOIN   
  64. TABLE                   TERMINATED                THEN   
  65. TINYBLOB                TINYINT                   TINYTEXT   
  66. TO                      TRAILING                  TRIGGER   
  67. TRUE                    UNDO                      UNION   
  68. UNIQUE                  UNLOCK                    UNSIGNED   
  69. UPDATE                  USAGE                     USE   
  70. USING                   UTC_DATE                  UTC_TIME   
  71. UTC_TIMESTAMP           VALUES                    VARBINARY   
  72. VARCHAR                 VARCHARACTER              VARYING   
  73. WHEN                    WHERE                     WHILE   
  74. WITH                    WRITE                     X509   
  75. XOR                     YEAR_MONTH                ZEROFILL   
 MySQL允许部分关键字用做未引起来的识别符,因为许多人以前曾使用过它们。下面列出了一些例子:
  • ACTION
  • BIT
  • DATE
  • ENUM
  • NO
  • TEXT
  • TIME
  • TIMESTAMP
分享到:
评论

相关推荐

    SQL 函数 字段内容更新插入

    UPDATE 表名 SET 字段名 = ROUND(字段名, 保留的小数位数) WHERE 条件; ``` - `ABS()`:返回绝对值。 ```sql UPDATE 表名 SET 字段名 = ABS(字段名) WHERE 条件; ``` 5. **日期/时间函数**: - `DATE_ADD()`...

    阿里巴巴MySQL开发规范

    - 禁止使用MySQL保留关键字作为字段名。 - 每张表必备字段包括:`id`, `gmt_create`, `gmt_modified`。 - 用于表示是否的概念字段,应使用`is_xxx`命名方式,并使用`unsigned tinyint`类型。 - 小数类型应使用`...

    MYSQL

    13.4.1 怎样检查表的出错 13.4.2 怎样修复表 13.4.3 表优化 13.5 日志文件维护 14 为MySQL增加新函数 14.1 增加一个新的用户定义函数 14.1.1 UDF调用顺序 14.1.2 参数处理 ...

    MySQL命令大全

    例如,往表 MyClass中插入二条记录, 这二条记录表示:编号为的名为Tom的成绩为.45, 编号为 的名为Joan 的成绩为.99,编号为 的名为Wang 的成绩为.5. mysql&gt;insert into MyClass values(1,’Tom’,96.45),(2,’Joan...

    MySQL中文参考手册.chm

    13.4 使用myisamchk进行崩溃恢复 13.4.1 怎样检查表的出错 13.4.2 怎样修复表 13.4.3 表优化 13.5 日志文件维护 14 为MySQL增加新函数 14.1 增加一个新的用户定义函数 14.1.1 ...

    MySQL中文参考手册

    + 4.15.2 启动 MySQL 服务器的问题 + 4.15.3 自动启动和停止 MySQL + 4.15.4 选项文件 o 4.16 升级和降级(downgrading)时有什么特别要做的事情吗? + 4.16.1 从一个 3.22 版本升级到 3.23 + 4.16.2 从一个 ...

    关于mysql 字段的那个点为是定界符

    例如,如果有个字段名为"User Name",为了插入数据到这个字段,正确的SQL语句应该是: ```sql INSERT INTO `users` (`User Name`, `PassWord`) VALUES ('value1', 'value2'); ``` 在这个例子中,字段名"User Name...

    MySQL 5.1中文手冊

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 ...

    mysql官方中文参考手册

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 ...

    MySQL 5.1参考手册

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 ...

    MYSQL使用手册大全

    `用于创建名为`MYSQLDATA`的新数据库。 - **选择数据库**:通过`USE MYSQLDATA;`切换到`MYSQLDATA`数据库进行后续操作,成功切换会显示`Database changed`。 - **查看数据库中的表**:`SHOW TABLES;`命令展示当前...

    MySQL 5.1官方简体中文参考手册

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 ...

    MySQL 5.1参考手册 (中文版)

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 ...

    深入浅出MySQL数据库1

    - 若需使用MySQL保留字作为数据库名、表名或字段名时,需使用反引号 `` ` `` 包围。 - **常用SQL语句**: - `SELECT USER()`:获取当前登录用户。 - `SELECT VERSION()`:获取MySQL版本信息。 - `SELECT NOW()`...

    MySQL 5.1参考手册中文版

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对...

    mysql总结超详细

    ### MySQL总结超详细 #### 1. 数据库的种类 ##### 1.1 关系型数据库介绍 关系型数据库是一种基于关系模型的数据库系统。它使用表格的形式来组织数据,并通过表格之间的关系来管理和访问这些数据。每个表格都有一...

    MYSQL中文手册

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和...

    MySQL5.1参考手册官方简体中文版

    9.6. MySQL中保留字的处理 10. 字符集支持 10.1. 常规字符集和校对 10.2. MySQL中的字符集和校对 10.3. 确定默认字符集和校对 10.3.1. 服务器字符集和校对 10.3.2. 数据库字符集和校对 10.3.3. 表字符集和校对 ...

    21分钟MySQL入门教程

    - **关键字**:MySQL中的保留词,具有特定含义,如`SELECT`、`CREATE`等。 - **语句**:SQL标准语句+MySQL扩展语句,完成特定数据库操作。 - **函数**:实现数据库操作的高级功能,包括但不限于字符串函数、数学...

Global site tag (gtag.js) - Google Analytics