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

Что именно вызывает проблему сейчас и как ее решить?

Вся помощь приветствуется.

EDIT: 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