2016-09-24 107 views
2

我最近把我的MySQL數據庫移到了一個新的服務器上,它給了我一些我以前在MySQL上遇到的新問題。 我的表列設置爲「默認=>無」,我的表已根據數據類型生成默認值。但現在當我嘗試插入表中時,我收到以下錯誤消息: 「#1364 - 字段'column_name'沒有默認值」,然後沒有任何內容插入表中。MySQL#1364 - 字段'column_name'沒有默認值 - 無法插入到數據庫

我能做些什麼來使「默認」選擇它自己的價值?

+1

也許這將幫助[MySQL的#1363](http://stackoverflow.com/questions/15438840/mysql-error-1364-field-doesnt-have-a-default-values) – winiardesign

+0

你在現在一臺新的服務器。它有不同的設置。最顯着的是'STRICT_TRANS_TABLES',這是在上面的重複目標關閉原因中看到的。 – Drew

回答

2

它沒有將數據保存到數據庫中,因爲字段'column_name'(也可能是其他)被檢查爲「NOT NULL」。這意味着該字段的值必須是其他值NULL(NULL - 根本沒有數據)

將字段標記爲非空通常是確保某些數據始終存在於字段中的好方法。根據您的需要,您也可以將其標記爲NULL,以便它永遠不會拋出錯誤並保存到數據庫中,而無需將任何內容插入到指定的字段中。

這意味着你有2種選擇:

  1. 標記您爲NULL字段(首先檢查是否需要你的領域有一定的價值)。

    ALTER TABLE your_table CHANGE COLUMN your_fieldyour_field VARCHAR(250)NULL;

  2. 將缺省值添加到該字段,所以如果在插入時沒有提供數據,它將放置您定義的內容。 例如:

    ALTER TABLE your_table CHANGE COLUMN your_fieldyour_field VARCHAR(250)NOT NULL DEFAULT 'some_default_value';

    當然,您的字段類型會匹配您要更改的字段。

+0

謝謝你的回答:)爲什麼我現在不得不在以前定義默認值。有沒有辦法關閉它? –

+0

也許這是一個老版本的mysql,或者你使用了一個不同的GUI工具來創建你的表,它使得字段爲默認值。 當您將某個字段標記爲NULL時,它不需要默認值,也不需要插入任何類型的值。 :) – Imaginaroom

相關問題