Ошибка при переносе базы данных от локального на удаленный сервер - MySQL
Формулировка задачи:
добрый день,
неожиданная проблема возникла при переносе базы данных от локального на удаленный сервер.
все вроде сделал правильно:
1. экспортировал базу на локальном сервере в файл my_db.sql
2. создал на удаленном севере новую базу данных с именем, например uXXXXXX_my_db (10 Mb)
3. на вкладке phpmyadmin Импорт (указано файл должен быть размером не более 32 Mb) выбрал файл my_db.sql и нажал OK
в результате через несколько минут сообщение об ошибке:
Ошибка
SQL-запрос:
-- -------------------------------------------------------- -- -- Структура таблицы `products` -- CREATE TABLE IF NOT EXISTS `products` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `category_id` int(11) unsigned NOT NULL DEFAULT '0', `manufacturer_id` int(11) unsigned NOT NULL DEFAULT '0', `country_id` int(11) unsigned NOT NULL DEFAULT '0', `ava` int(3) NOT NULL DEFAULT '0', `qty` int(12) NOT NULL DEFAULT '0', `sku` int(7) unsigned zerofill DEFAULT NULL, `supplier_reference` varchar(64) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `name` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `img_thumb` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `img_large` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `img_3d` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `movie` varchar(128) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `sh[...]
Ответ MySQL:
#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
в таблице `products` поля 30 и 31:
.......................
`date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`timeLeft` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
.........................
как можно исправить данную проблему?
спасибо за помощь
Решение задачи: «Ошибка при переносе базы данных от локального на удаленный сервер»
textual
Листинг программы
DELIMITER | CREATE TRIGGER `update_time` before update ON `products` NEW.timeLeft = NEW.date_added; END DELIMITER ;
Объяснение кода листинга программы
- Установка DELIMITER для избежания конфликтов с синтаксисом SQL
- Создание триггера с именем
update_time
- Указание действия, которое должно быть выполнено при возникновении события (в данном случае, обновление таблицы
products
) - Определение времени, которое должно быть установлено для поля
timeLeft
при обновлении записи - Указание поля, для которого предназначен триггер (в данном случае, поле
date_added
) - Завершение определения триггера и его сохранение в базе данных
- Восстановление стандартного DELIMITER для возможности работы с SQL-запросами без конфликтов
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д