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