Ошибка синтаксиса создания таблицы

Я получил дамп данных MySQL и пытаюсь вставить данные в набор временных таблиц. Оператор создания для первой таблицы показан ниже. Когда я запускаю это, я получаю сообщение об ошибке: «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 ''temp_books'( 'ID'int( 11 ) NOT NULL AUTO_INCREMENT, 'start'varchar( 20 ) ' at line 1». Я проверил документацию по синтаксису MySQL и не вижу, что проблема.

CREATE TABLE 'temp_books' (
  'ID' int(11) NOT NULL AUTO_INCREMENT,
  'start' varchar(20) NOT NULL,
  'customer_id' int(11) NOT NULL DEFAULT '0',
  'total_num' int(11) NOT NULL,
  'amount' double(5,2) NOT NULL DEFAULT '0.00',
  'changed' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY ('ID'),
  UNIQUE KEY 'start' ('start')
) ENGINE=MyISAM AUTO_INCREMENT=4853 DEFAULT CHARSET=latin1;
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
6 206
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

У меня ВСЕГДА были проблемы с CREATE TABLE. Не знаю почему. Требуется метод проб и ошибок.

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

CREATE TABLE temp_books (
  ID int(11) NOT NULL AUTO_INCREMENT,
  start varchar(20) NOT NULL,
  customer_id int(11) NOT NULL DEFAULT '0',
  total_num int(11) NOT NULL,
  amount double(5,2) NOT NULL DEFAULT '0.00',
  changed timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (ID),
  UNIQUE KEY start (start)
) ENGINE=MyISAM AUTO_INCREMENT=4853 DEFAULT CHARSET=latin1;

Допускает ли MySQL что-то вроде int (11)?

Federico A. Ramponi 18.01.2009 06:02

Да. Но я думаю, что он преобразует объявление в целое число без знака.

Sampson 18.01.2009 06:05

Мне пришлось удалить кавычки, а также значение по умолчанию для измененного поля, а также кодировку по умолчанию. Надеюсь, это не повлияет на данные.

Ответ принят как подходящий

Не следует заключать идентификаторы в одинарные кавычки. Если вы собираетесь цитировать их, используйте символ «обратной галочки» («»). Вы также можете использовать двойные кавычки, но вы должны указать этот режим:

SET sql_mode='ANSI_QUOTES';

http://dev.mysql.com/doc/refman/5.0/en/identifiers.html

Вот еще один способ его написания, который может сработать для некоторых: (для краткости опущена большая часть столбцов)

create table temp_books
(
id int not null,
start varchar(255) null,
constraint six_cb_datasource_pk
    primary key (id)
);

Другие вопросы по теме