Почему sql не позволяет мне создать эту таблицу? - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь перенести базу данных От: MySQL Distrib 5.5.60-MariaDB, для Linux (x86_64) MySQL 5.5.4, UNIX

Я попытался импортировать базу данных в виде zip-пакета, и он начал выдавать ошибки, поэтому теперь я пытаюсь пересоздать каждую таблицу по одной на phpMyAdmin.

В приведенном ниже запросе выдается ошибка синтаксиса # 1064, и у меня возникают проблемы с выяснением проблемы.

MySQL Сказал:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),
  `st' at line 6 

Я просматриваю строку 6, пытаясь найти зарезервированные слова, пропущенные данные, опечатки или устаревшие команды, но безуспешно.

CREATE TABLE `tblmoto_auth_policies` (
  `policy_id` int(11) NOT NULL AUTO_INCREMENT,
  `policy_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `policy_desc` text COLLATE utf8_unicode_ci NOT NULL,
  `policy_url` text COLLATE utf8_unicode_ci NOT NULL,
  `date_added` timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP,
  `status` smallint(2) NOT NULL DEFAULT '1',
  PRIMARY KEY (`policy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Я мог бы использовать некоторую помощь. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 28 июня 2019

CURRENT_TIMESTAMP не подходит

Попробуйте это:

CREATE TABLE `tblmoto_auth_policies` (
  `policy_id` int(11) NOT NULL AUTO_INCREMENT,
  `policy_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `policy_desc` text COLLATE utf8_unicode_ci NOT NULL,
  `policy_url` text COLLATE utf8_unicode_ci NOT NULL,
  `date_added` timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2) ON UPDATE CURRENT_TIMESTAMP(2),
  `status` smallint(2) NOT NULL DEFAULT '1',
  PRIMARY KEY (`policy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
0 голосов
/ 28 июня 2019

Это работает в SQL Fiddle:

CREATE TABLE `tblmoto_auth_policies` (
  `policy_id` int(11) NOT NULL AUTO_INCREMENT,
  `policy_name` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
  `policy_desc` text COLLATE utf8_unicode_ci NOT NULL,
  `policy_url` text COLLATE utf8_unicode_ci NOT NULL,
  `date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `status` smallint(2) NOT NULL DEFAULT '1',
  PRIMARY KEY (`policy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

, то есть, удалить точность ((2)) из определения столбца date_added.

TIMESTAMP(2) действительносинтаксис, но не в сочетании с автоинициализаторами DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP.

...