对DAO进行单位测试控制台报错:
org.hibernate.AssertionFailure: null id in xxx.xxx.xxx..model.MemKey entry (don't flush the Session after an exception occurs)
通过Navicat直接执行SQL语句报错,且key显示为蓝色:
INSERT INTO mem_key (prefix,site_id,user_id,suffix,key,expiration_time,create_time) VALUES(NULL,NULL,NULL,NULL,NULL,NULL,NULL); [Err] 1064 - 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 'key,expiration_time,create_time) VALUES(NULL,NULL,NULL,NULL,NULL,NULL,NULL)' at line 1
由此断定问题的原因是字段名和MySQL的保留字冲突了
MySQL5.5保留字见如下表格:
MySQL 5.5.44中的保留字 | ||
ACCESSIBLE | 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 | 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 |
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 | LEADING | LEAVE |
LEFT | LIKE | LIMIT |
LINEAR | LINES | LOAD |
LOCALTIME | LOCALTIMESTAMP | LOCK |
LONG | LONGBLOB | LONGTEXT |
LOOP | LOW_PRIORITY | MASTER_SSL_VERIFY_SERVER_CERT |
MATCH | MAXVALUE | 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 | RANGE | READ |
READS | READ_WRITE | REAL |
REFERENCES | REGEXP | RELEASE |
RENAME | REPEAT | REPLACE |
REQUIRE | RESIGNAL | RESTRICT |
RETURN | REVOKE | RIGHT |
RLIKE | SCHEMA | SCHEMAS |
SECOND_MICROSECOND | SELECT | SENSITIVE |
SEPARATOR | SET | SHOW |
SIGNAL | 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 | XOR | YEAR_MONTH |
ZEROFILL | ||
MySQL 5.5中的保留字 | ||
GENERAL | IGNORE_SERVER_IDS | MASTER_HEARTBEAT_PERIOD |
MAXVALUE | RESIGNAL | SIGNAL |
SLOW |
参见:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
相关推荐
MySQL数据库中的保留字是指在数据库中具有特殊意义和用途的单词,它们被用于SQL语句中,以执行特定的操作或作为命令的关键字。这些保留字不能用作表名、列名或其他对象的名称。保留字通常用于执行数据查询、定义数据...
MySQL保留字列表包括: * ALTER * ANALYZE * AND * AS * ASC * AUTO_INCREMENT * AVG SQL Server保留字 SQL Server是微软公司开发的一种关系数据库管理系统。SQL Server的保留字主要包括以下几个方面: * 数据...
在MySQL 5.7中,了解关键字和保留字对于编写有效的SQL语句至关重要。这些关键字是SQL语言中具有特殊含义的单词,它们用于定义数据库结构、查询数据、更新记录等操作。保留字则是那些不能直接作为数据库对象名称(如...
若真的这么写,必然出错,当字段名与MySQL保留字冲突时,可以用字符“`”将字段名括起来: 代码如下:select `from` from table; 总结 刚发现我原先设计的数据库表里有两个字段都用了保留字(add,comment)。在...
2. **保留字避免**:不要使用MySQL保留字作为对象名称。 3. **语言风格统一**:命名应全英文或全中文,避免混用。 4. **前缀/后缀使用**:对于临时表添加`tmp`或`temp`作为前缀/后缀;统计表添加`stat`或`statistic`...
例如,MySQL、Oracle、SQL Server和PostgreSQL等都有各自的保留字集。在Excel表格中,这些保留字可能会按照数据库类型分类,便于用户根据需要查找。 在实际工作中,开发者应遵循以下几点来避免与保留字冲突: 1. ...
例如,在MySQL中,你可以尝试将疑似保留字作为表名创建,如果报错,那么它很可能就是保留字。 在编写SQL脚本时,我们常常会遇到需要使用与保留字相同或相似的单词,这时可以采用以下策略来避免冲突: 1. 使用双引号...
同时,禁止使用MySQL保留字,并且建议命名长度不超过32个字符,各部分之间使用下划线连接。对于临时库和备份库,也有相应的前缀和后缀的命名规则。 基础规范强调了数据库的存储引擎、字符集、主键设计、注释添加...
- 若需使用MySQL保留字作为数据库名、表名或字段名时,需使用反引号 `` ` `` 包围。 - **常用SQL语句**: - `SELECT USER()`:获取当前登录用户。 - `SELECT VERSION()`:获取MySQL版本信息。 - `SELECT NOW()`...
5. **禁止使用MySQL保留字**:使用保留字作为名称可能会导致语法错误或其他问题,因此需避免此类情况发生。 6. **临时库/表命名规则**:临时库或表的名称应以 `tmp` 为前缀,并以日期为后缀(如 `tmp_test01_0704`...
库名、表名、字段名禁止使用MySQL保留字** - **级别**: 强制 - **原因**: 使用保留字会增加SQL语句的复杂度,导致编写和维护变得更加困难。 **4. 临时库、表名必须以tmp为前缀** - **级别**: 强制 - **原因**:...
- **避免MySQL保留字**:例如`call`、`group`等。 - **全部使用小写字母**:保持一致性和易于区分。 **2.2 表命名** - **库名、表名、字段名需见名知意**:推荐使用名词而非动词。 - **避免MySQL保留字**:如`...
11. 避免使用MySQL保留字 12 不搞外键关联,一般都在代码维护 13. 一般都选择INNODB存储引擎 14. 选择合适统一的字符集。 15. 如果你的数据库字段是枚举类型的,需要在comment注释清楚 16.时间的类型选择 17.不建议...
- 原则:使用有意义的英文词汇,用下划线分隔,仅限字母、数字和下划线,避免MySQL保留字,所有对象名使用小写。 - 数据库命名:不超过30个字符。 - 表命名:模块相关的表使用相同前缀,清晰表达表的含义,用...
同时,禁止使用MySQL保留字作为库名、表名或字段名,并为临时库和备份库制定了特定的命名规则,例如临时库以tmp为前缀,并以日期为后缀;备份库以bak为前缀,同样以日期为后缀。 基础规范方面,手册推荐使用InnoDB...
- **总则**:所有数据库对象名应使用小写字母、数字和下划线,且以字母开头,避免使用MySQL保留字,多词之间用下划线分隔,长度受限时使用简写或缩写。 - **数据库命名**:以"db_"前缀加站点名再加应用名。 - **...
- 对象命名避免使用MySQL保留字。 - 多个单词之间使用下划线分隔。 - 对象名称过长时,可以使用简写或缩写。 2. **数据库命名**: - 命名格式为`db_站点名_应用名称`。 3. **表命名**: - 同一模块下的表使用...
同时建议库名、表名、字段名不超过32个字符,避免使用MySQL保留字,并且有专用前缀来区分临时库、备份库和普通库表。 库表规范:这部分介绍了具体的存储引擎选择、表注释的必要性、分区表的使用限制、表结构设计的...