1. 程式人生 > >當資料庫欄位涉及到mysql保留字,插入資料不成功

當資料庫欄位涉及到mysql保留字,插入資料不成功

簡述

今天在編寫專案的時候遇到一個問題,通過java專案向mysql資料庫插入資料時,報下面的問題

com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: 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 'desc) values ('123', 1, 1.0, 1.0, null, null, null, null, '1')' at line 1

原因在於我使用了mysql的保留字,導致始終無法插入資料,但是從表面來看還沒什麼問題

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

相關推薦

資料庫涉及mysql保留插入資料成功

簡述 今天在編寫專案的時候遇到一個問題,通過java專案向mysql資料庫插入資料時,報下面的問題 com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in y

關於mysql名和保留衝突的問題

建了個表,有個欄位起名為key,結果insert語句報錯了,說是sql不對。 建表語句如下: CREATE TABLE `base_error_message_test` (   `message_id` varchar(50) NOT NULL,   `message`

Mysql名與保留衝突導致的異常解決

一:引言 用hibernate建表時經常遇到的一個異常:Error executing DDL via JDBC Statement 方法: 檢視報錯sql語句。問題就在這裡。 我是表名(

使用Python建立MySQL資料庫實現動態增加以及動態的插入資料

應用場景: 我們需要設計一個數據庫來儲存多個文件中每個文件的關鍵字。假如我們每個文件字元都超過了1000,取其中出現頻率最大的為我們的關鍵字。 假設每個文件的關鍵字都超過了300,每一個檔案的0-29

【MyBatis】解決資料庫名稱與Java實體類屬性名稱一致問題

問題描述:       有時候在專案中會遇到資料庫欄位名稱與實體類屬性名稱取得不一樣的情況,如下:      資料庫裡的資料為:       此時,如果我們查詢該表的某條資料,Proj

在Mybatis中解決資料庫名與java實體類屬性名一致的三種方式

在使用Mybatis來持久化資料庫時,有時候會碰到資料庫中表中的欄位與java實體類中屬性名不一致的情況,在這種情況下Mybatis是不能完成欄位的自動對映的。而通常情況下,資料庫及實體類是不應該被改的的。所以要在不改變資料庫以及實體類的情況下解決這個問題,下面是解決該問題

解決在springboot+mybatis+postgresql時資料庫型別為json時如何與mybatis進行對映

pg 資料庫中 某欄位型別為jsonJava實體中對應型別是 jsonObject   private JSONObject info;在mybatis的xml中,常規無法直接進行對映,需要自己寫一個TypeHandler,自定義一個JSONTypeHandlerPg類具體程

曹工改bug--本來以為很簡單的資料庫長度不足的問題最後竟然靠抓包才解決

# 問題描述 這兩天本來忙著新功能開發,結果之前的一個專案最近要上了,然後又在測試,然後就喜提bug一枚(not mine),看bug描述,很簡單,而且本地環境也重現了,只要輸入2000個英文字元就可以復現。 核心就是: > 當任務描述輸入最大字元2000時,報未知異常 #問題定位 這種字元數限

名為mysql保留的表的插入問題

嘗試使用一個識別符,例如使用嵌入式MySQL資料型別或函式名作為表名或列名,例如TIMESTAMP或GROUP,會造成一個常見問題。允許你這樣操作(例如,ABS可以作為一個列名)。但是,預設情況下,在數呼叫中在函式名和後面的‘(’字元之間不允許有空格。該要求使函式呼叫與列名引用不同。該行為的不利結果是在某些上

Mybatis 實體屬性與資料庫一致時的解決方案

使用Mybatis的時候,Mybatis根據資料庫的欄位找到對應實體類的屬性,通過set方法對屬性進行注入。 我們可以對實體類的set方法進行測試,測試如下: 執行結果如下: 說明:Mybatis會根據相同的屬性和欄位名通過set方法進行注入 那

內部規範--Mysql資料庫命名

方便自動程式碼生成器生成相應的功能 1、刪除標記 IS_DEL `IS_DEL` int(1) NOT NULL DEFAULT '0' COMMENT 'TITLE[刪除狀態] INTRO[刪除狀態,詳細資訊在B_RECORD_DELETE 表中記錄] INPUT[TY

sqlserver資料庫中如果對數值型的進行小數點保留如果是小於1的數前面的0消失解決方案

sqlserver資料庫中數值型保留兩位小數的方式: 1. 使用 Round() 函式,如 Round(@num,2)  引數 2 表示 保留兩位有效數字。 2. 更好的方法是使用 Convert(decimal(18,2),@num) 實現轉換,decimal(18,2

sqlalchemymysql資料庫對應問題

欄位型別是在定義模型時, 對每個 Column 的型別約定. 不同型別的欄位型別在輸入輸出上, 及支援的操作方面, 有所區別. 這裡只介紹 sqlalchemy.types.* 中的型別, SQL 標準型別方面, 是寫什麼最後生成的 DDL 語句就是什麼, 比如 B

mysql資料庫中id中間記錄刪除以後再新增記錄id順序被打亂

舉個例子 id 1 2 3 4 5 6 7 8 這是8條記錄 id 欄位設定是自動遞增的現在刪除其中的7 8 共2條記錄再新增一條記錄雖然記錄刪除了,但是id還是從未刪除的時候繼續增長,現在把表中id自動增長關閉,把id=9的記錄刪除 再新增記錄現在就可以了

java中自定義列舉enum對映到mysql資料庫處理器handler

今年企業對Java開發的市場需求,你看懂了嗎? >>>   

sails 資料庫

屬性值 概述 模型的屬性是一個模型的基本的資訊。一個Person的模型可能有屬性叫做firstName,lastName,phoneNumber,age,birthDate和emailAddress。 屬性選項 這些選項可以用來執行各種約束條件並且新增特殊的增強功能到我們的模型中。

MyBatis學習(四)--解決實體屬性和資料庫一致的問題

寫在前面 孤傲蒼狼的部落格:https://www.cnblogs.com/xdp-gacl/category/655890.html 程式碼中會有很多重要的註釋,請不要忽略。 前面在建立實體時,強調過一定要和資料庫列名一致。如果不一致結果是對映不到實體中的,但是資料庫和j

C#查詢ACCESS資料庫和時間

查詢表的所有欄位 string.Format("SELECT * FROM{0}", TableName); 查詢表中的一個欄位 在ACCESS中將欄位用CStr()轉換成字串來判斷 string.Format("SELECT* FROM {0} WHERE CStr({1})=

ireport報表製作 一個顯示的資料太多時(資料過長)則需要自動換行

1、當一個欄位顯示的資料太長,一個表格放不下,則需要自動換行,選中要更改的表格(要顯示動態內容的欄位),設定屬性Stretch with overflow 為鉤選狀態。 未勾選之前:   勾選之後:   2、但是,表格出現斷層的情況

ORACLE資料庫型別說明

型別 含義 儲存描述 備註 CHAR 固定長度字串 最大長度2000bytes   VARCHAR2 可變長度的字串,