2016-09-28 28 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

相关问题