數據插入報錯Incorrect integer value: '' for column


鄙人不才,在操作數據庫存儲的時候碰見這樣的問題。
執行sql語句批量插入數據的時候報錯

 

Incorrect integer value: '' for column 'zhuticengshu' at row 1

我的數據庫表設計十分的簡單:
說白了,也就是記錄下,以后避免這樣的錯誤發生
其中id是自增id,其余的字段都是非主鍵,執行的時候一直報錯

Incorrect integer value: '' for column 'zhuticengshu' at row 1

問題測試

首先將后台打印出來的SQL復制出來
通過navicat進行批量的數據插入時,插入數據成功,無異常。

 

 

插入數據

 

問題解決

最后google了一下,發現mysql版本到5以上的都會遇到這樣的問題,插入空字符要使用NULL 

 <insert id="insertBatchExt">
    INSERT INTO ${tableName}(
    <foreach collection="keys" item="item" index="index" separator=",">
      ${item.fieldName}
    </foreach>
    )
    VALUES
    <foreach collection="exts" item="ext" index="index" separator=",">
      (
      <foreach collection="ext" item="extitem" index="index" separator=",">
        <choose>
          <when test="extitem.value==null">
            NULL
          </when>
          <otherwise>
            '${extitem.value}'
          </otherwise>
        </choose>
      </foreach>
      )
    </foreach>
  </insert>

 

 

 

網上查資料發現5以上的版本如果是空值應該要寫NULL
這種問題一般mysql 5.x上出現。

使用Select version();查看,

我用的是mysql5.0.37,而創建備份的MySQL數據庫版本是5.6

官方解釋說:得知新版本mysql對空值插入有"bug",
要在安裝mysql的時候去除默認勾選的enable strict SQL mode
那么如果我們安裝好了mysql怎么辦了,解決辦法是更改mysql中的配置 my.ini

my.ini中查找sql-mode,  

默認為sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",  

將其修改為sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重啟mysql后即可 

記錄下來與大家共勉,共通學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM