2016-09-28 477 views
0

我是新來的這個SQL,我想我完全不理解它。我試圖安裝一個腳本,後者執行以下步驟插入在數據庫中創建表MySQL錯誤 - 字段「ID」沒有默認值

我得到的錯誤是:

錯誤!
Mysql條目失敗字段'fb_app_id'沒有默認值。

所以我搜索了這些文件,並找到了創建表的這段代碼。

CREATE TABLE IF NOT EXISTS `global_config` (
    `site_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `site_url` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `meta_description` text COLLATE utf8mb4_unicode_ci NOT NULL, 
    `meta_keywords` text COLLATE utf8mb4_unicode_ci NOT NULL, 
    `site_theme` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `fb_app_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `fb_app_secret` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `fb_app_token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `fb_scope` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `tw_app_id` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `tw_app_secret` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `yt_client_id` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `yt_client_secret` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `yt_dev_token` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
`fb_enabled` tinyint(1) NOT NULL, 
    `tw_enabled` tinyint(1) NOT NULL, 
    `yt_enabled` tinyint(1) NOT NULL, 
    `ffmpeg` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `seo_url` tinyint(1) NOT NULL, 
    `media_plugin_enabled` tinyint(1) NOT NULL, 
    `downloader_plugin_enabled` tinyint(1) NOT NULL, 
    `image_watermarking_enabled` tinyint(1) NOT NULL, 
    `video_watermarking_enabled` tinyint(1) NOT NULL, 
    `image_editor_enabled` tinyint(1) NOT NULL, 
    `video_editor_enabled` tinyint(1) NOT NULL, 
    `disable_all_crons` tinyint(1) NOT NULL, 
    `disable_poster_cron` tinyint(1) NOT NULL, 
    `disable_hide_delete_cron` tinyint(1) NOT NULL, 
    `disable_insights_cron` tinyint(1) NOT NULL, 
    `disable_videoeditor_bumping_cron` tinyint(1) NOT NULL, 
    `enable_signup` tinyint(1) NOT NULL, 
    `enable_maintenance_mode` tinyint(1) NOT NULL, 
    `maintenance_message` text COLLATE utf8mb4_unicode_ci NOT NULL, 
    `paypal_email` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL, 
    `admin_email` varchar(500) COLLATE utf8mb4_unicode_ci NOT NULL, 
    UNIQUE KEY `site_name` (`site_name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

現在究竟是什麼原因導致了這個問題,我該如何解決它呢?

所有幫助表示讚賞。

編輯:index.php文件

$(document).on('click', '.app_setup', function(){ 

var elem = $(this); 
var fb_app_id = $('#fb_app_id').val(); 
var fb_app_secret = $('#fb_app_secret').val(); 
var tw_app_id = $('#tw_app_id').val(); 
var tw_app_secret = $('#tw_app_secret').val(); 
var yt_client_id = $('#yt_client_id').val(); 
var yt_client_secret = $('#yt_client_secret').val(); 
var yt_dev_key = $('#yt_dev_key').val(); 

elem.hide(); 
notify('wait', 'Setting up...'); 
$.post('ajax.php', { 
    'fb_app_id': fb_app_id, 
    'fb_app_secret': fb_app_secret, 
    'tw_app_id': tw_app_id, 
    'tw_app_secret': tw_app_secret, 
    'yt_client_id': yt_client_id, 
    'yt_client_secret' : yt_client_secret, 
    'yt_dev_key': yt_dev_key, 
    'app_setup': 1 
}, function(response){ 
    var data = $.parseJSON(response); 
    if(data.error != ''){ 
     elem.show(); 
     return notify('error', data.error); 
    } 
    else{ 
     notify('success', 'App setup successful'); 
     $('.step3').slideUp(); 
     $('.step4').slideDown(); 
    } 
}); 
}); 
+0

你確定你要使用的表時,在創建得到這個錯誤,而不是? –

+0

我不認爲創建表可能會產生該錯誤,因此您的問題中沒有包含代碼。 –

+0

感謝您的評論,我編輯了問題並添加了關於fb_app_id的代碼。希望這可以幫助。它發生在這個網站上:http://pastebin.com/wdGjpP2u(當按下) – Salexes

回答

0

我不認爲這是導致錯誤的CREATE TABLE語句。

錯誤(很有可能)來自執行不爲該列提供值的INSERT語句。當某個列沒有提供值時,MySQL將使用該列的默認值。

一種辦法是修改表的定義:

`fb_app_id` varchar(64) NOT NULL DEFAULT 'foo', 

但鑑於被定義爲NOT NULL表中的其他列的數量,這可能只是移動的錯誤到下一列。在不檢查INSERT語句的情況下,我們只是猜測「修復」是最合適的。


作爲示範:

CREATE TABLE my_t 
(id INT UNSIGNED NOT NULL PRIMARY KEY 
, foo VARCHAR(4) NOT NULL 
); 

INSERT INTO my_t (id) VALUES (1); 
-- Error Code: 1364 
-- Field 'foo' doesn't have a default value 

INSERT INTO my_t (id,foo) VALUES (2,NULL); 
-- Error Code: 1048 
-- Column 'foo' cannot be null 

ALTER TABLE my_t CHANGE foo foo VARCHAR(4) NOT NULL DEFAULT NULL ; 
-- Error Code: 1067 
-- Invalid default value for 'foo' 

ALTER TABLE my_t CHANGE foo foo VARCHAR(4) NOT NULL DEFAULT ''; 

INSERT INTO my_t (id) VALUES (3); 
-- 1 row(s) affected 
+0

感謝您的評論,我編輯了這個問題,並添加了關於fb_app_id的代碼。希望這可以幫助。 – Salexes

+0

按NEXT時發生在此頁面上:http://pastebin.com/wdGjpP2u – Salexes

相關問題