Field 'id' doesn't have a default value問題解決方案

來源:互聯網
上載者:User
 
Field 'id' doesn't have a default value問題解決方案
 
 

突然想溫習溫習對資料庫的讀寫,於是就用mysql建了一張單獨的表(見代碼1),用Hibernate寫了個應用,可以正常查詢、修改資料了。開始時,資料是在mysql的GUI工具裏手工輸入的,嫌煩,於是就想到用程式批量產生一些,於是麻煩也跟著來了……

    代碼1 Sql代碼   CREATE TABLE  `stitp`.`Ticket` (     `id` int(11) NOT NULL,     `state` tinyint(1) NOT NULL,     `grade` int(2) NOT NULL,     PRIMARY KEY  (`id`)   ) ENGINE=InnoDB DEFAULT CHARSET=gbk    

        運行插入資料的java代碼,報異常:field ‘id' doesn't have a default value沒錯啊,我的主鍵怎麼可能有預設值呢。不理解。Google了一下這個異常,一大坨結果,總結一下就是那麼兩種方法:

解決方案一: 開啟my.ini,尋找 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改為 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 然後重啟MYSQL

解決方案二: MySQL 5 uses a strict mode which needs to be disabled. In Windows, Goto Start-->Programs-->MySQL->MySQL Instance Config Wizard. Follow through the Reconfigure Instance option-->Detailed Configuration-->Continue Next a few screens. At the bottom under Enable TCP/IP option there is 'Enable Strict Mode'. Deslect this option (no tick). Save changes and MySQL will restart.

       都試了,沒用,而且我是Fedora,沒有ini檔案,而是cnf檔案(我的my.cnf在/etc下面)

這個關鍵字看來是找不到辦法了,換成尋找hibernate裡對主鍵的設定吧。果然就找到了辦法。原來是.hbm.xml檔案的設定問題,在裡面把主鍵的屬性改為: Xml代碼   <generator class="assigned"/>    

        再運行就可以了。因為assigned是指主鍵是由人工分配的,而native則指主索引值由庫自動給出。我以前都是想都沒想就加上native的,反正也不知道什麼意思,而且以前用到要插入資料的表,主鍵都是“auto increment”的,所以也沒碰到問題。這次就暴露了。

總結一下:其實就是缺乏對Hibernate的全面理解,沒有完全掌握它的各種設定。因為當初學hibernate也是抱著"需求"學的,而不是正兒八經學習它的,沒有完全理解各種設定就上手了。

 
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.