SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.05.2018 17:06:02

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Ошибка при переносе БД

Добрый день подскажите делаю sql запрос в 5 Mysql (копирую из 4)

CREATE TABLE blablabla (
  id int(11) NOT NULL auto_increment,
  name varchar(255) default NULL,
  key varchar(255) default NULL,
  value longtext,
  pos int(11) default NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM; (тут было TYPE=MyISAM;)

Получаю ошибку.

Ответ 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 'varchar(255) default NULL,
  value longtext,
  pos int(11) default NULL,
  PR' at line 4


Есть ли вообще средства, или как можно быстро конвертировать базы данных из 4 версии Mysql в 5?
Спасибо. Сам не силен в этом деле.

Отредактированно ujhjl (18.05.2018 17:08:47)

Неактивен

 

#2 18.05.2018 17:10:10

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

key - ключевое слово, его нужно брать в обратные кавычки `key`, аналогично `value`
полный список см в доке - https://dev.mysql.com/doc/refman/8.0/en/keywords.html

Неактивен

 

#3 18.05.2018 17:15:24

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Огромное спасибо. А можно я если что то не понятно еще у вас спрошу?
Запрос получилось сделать.

Отредактированно ujhjl (18.05.2018 17:16:02)

Неактивен

 

#4 18.05.2018 17:16:09

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

конечно, для того и есть форум

Неактивен

 

#5 20.05.2018 08:29:41

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

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

CREATE TABLE t_components (
  id int(11) NOT NULL auto_increment,
  name varchar(50) NOT NULL default '',
  link varchar(255) NOT NULL default '',
  menuid int(11) unsigned NOT NULL default '0',
  parent int(11) unsigned NOT NULL default '0',
  admin_menu_link varchar(255) NOT NULL default '',
  admin_menu_alt varchar(255) NOT NULL default '',
  `option varchar`(50) NOT NULL default '',
  ordering int(11) NOT NULL default '0',
  admin_menu_img varchar(255) NOT NULL default '',
  iscore tinyint(4) NOT NULL default '0',
  params text NOT NULL,
  PRIMARY KEY  (id)
) ENGINE=MyISAM;


Ответ 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 '(50) NOT NULL default '',
  ordering int(11) NOT NULL default '0',
  admin_men' at line 9

Неактивен

 

#6 20.05.2018 09:06:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

вместо
   `option varchar`(50) NOT NULL default '',
нужно
   `option` varchar(50) NOT NULL default '',

Неактивен

 

#7 20.05.2018 13:22:17

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Помогло спасибо.

Неактивен

 

#8 20.05.2018 13:36:22

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

А вот такое возможно вылечить?
пробовал заменить во всем дампе varchar(255) на (128)  не помогло.


CREATE TABLE t_core_acl_aro (
  aro_id int(11) NOT NULL auto_increment,
  section_value varchar(240) NOT NULL default '0',
  value varchar(240) NOT NULL default '',
  order_value int(11) NOT NULL default '0',
  name varchar(255) NOT NULL default '',
  hidden int(11) NOT NULL default '0',
  PRIMARY KEY  (aro_id),
  UNIQUE KEY section_value_value_aro (section_value,value),
  UNIQUE KEY t_gacl_section_value_value_aro (section_value,value),
  KEY hidden_aro (hidden),
  KEY t_gacl_hidden_aro (hidden)
) ENGINE=MyISAM;


Ответ MySQL: Документация

#1071 - Specified key was too long; max key length is 1000 bytes

Неактивен

 

#9 20.05.2018 22:03:36

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

как раз ваш случай:
https://sqlinfo.ru/forum/viewtopic.php?pid=1553#p1553

Неактивен

 

#10 21.05.2018 05:50:44

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Почитал но не смог разобраться,   я делаю дамп командой, потом загружаю через phpmyadmin.

mysqldump -u root -p  base   > base.sql


Нужно как то по другому это сделать? И как можно их конвертировать?
Что то с кодировками не так получается?

Неактивен

 

#11 21.05.2018 10:31:06

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

в base.sql
вместо
UNIQUE KEY section_value_value_aro (section_value,value),
UNIQUE KEY t_gacl_section_value_value_aro (section_value,value),
оставляете одну запись
UNIQUE KEY section_value_value_aro (section_value(166),value(166)),

и с hidden один из ключей лишний.

Что касается перекодировки, то посмотрите обе статьи из https://sqlinfo.ru/articles/encoding/

Неактивен

 

#12 21.05.2018 11:17:34

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Это нужно поправить во всем дампе?
Все получилось, поправил в одной таблице только.
Огромное спасибо. Почитаю про перекодировку, я правильно понял это еще один вариант?

Отредактированно ujhjl (21.05.2018 11:32:07)

Неактивен

 

#13 21.05.2018 13:39:32

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

да

Неактивен

 

#14 29.05.2018 12:21:58

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Доброго дня, снова у меня синтаксическая ошибка, при переносе из 4 в 5 БД
ругается на вот такую строчку.

INSERT INTO item VALUES (299,'26.05.2009',0,0,2,10,'','','','','-','-','-','','','','','',NULL,'',NULL,0,0,0,0,NULL,NULL,0);


#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 'INSERT INTO item VALUES (299,'26.05.2009',0,0,2,10,'','','','','-','-','-','',''' at line 48

Неактивен

 

#15 29.05.2018 12:26:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

что перед этой строкой?

Неактивен

 

#16 29.05.2018 12:28:51

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Вот это

CREATE TABLE item (
  id int(6) NOT NULL auto_increment,
  date_find varchar(10) NOT NULL default '',
  id_menu_0 int(5) default '0',
  type int(5) NOT NULL default '0',
  gl_type int(3) NOT NULL default '2',
  npp int(7) NOT NULL default '0',
  artikl text NOT NULL,
  gost text NOT NULL,
  sertif text NOT NULL,
  ime text NOT NULL,
  cena_0 varchar(8) NOT NULL default '-',
  cena_1 varchar(8) NOT NULL default '-',
  cena_2 varchar(8) NOT NULL default '-',
  status varchar(128) NOT NULL default '',
  small_txt mediumtext NOT NULL,
  user_txt mediumtext NOT NULL,
  extend_txt text NOT NULL,
  file_txt text NOT NULL,
  file_pdf text,
  file_txt2 text NOT NULL,
  file_pdf2 text,
  show_fest1 int(1) NOT NULL default '0',
  hits1 int(1) NOT NULL default '0',
  tab1 int(1) default '0',
  on_off int(1) default '0',
  image_txt text,
  image varchar(128) default NULL,
  im_tab int(1) NOT NULL default '0',
  PRIMARY KEY  (id),
  KEY type (id_menu_0)
) ENGINE=MyISAM

--

Отредактированно ujhjl (29.05.2018 12:30:03)

Неактивен

 

#17 29.05.2018 12:33:40

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

; отсутствует, нужно
) ENGINE=MyISAM;

после 2ух дефисов нужен пробел
--

Неактивен

 

#18 29.05.2018 12:39:36

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Конечно же. Спасибо.
Чет не внимательно заменил я.

Неактивен

 

#19 23.10.2018 13:48:47

ujhjl
Участник
Зарегистрирован: 18.05.2018
Сообщений: 22

Re: Ошибка при переносе БД

Добрый день делаю вот такой запрос.

--

CREATE TABLE access (
  userid int(10) unsigned NOT NULL default '0',
  forumid smallint(5) unsigned NOT NULL default '0',
  accessmask smallint(5) unsigned NOT NULL default '0',
  PRIMARY KEY  (userid,forumid)
) ENGINE=MyISAM;



INSERT INTO access VALUES (1688,4,0);


Получаю



#1050 - Table 'access' already exists

Отредактированно ujhjl (23.10.2018 13:58:56)

Неактивен

 

#20 23.10.2018 14:36:04

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Ошибка при переносе БД

таблица access уже существует, поэтому новая не создается
имя таблицы должно быть уникально в пределах одной бд

Неактивен

 

#21 23.10.2018 16:17:02

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Ошибка при переносе БД

Еще можете заменить

CREATE TABLE

на

CREATE TABLE IF NOT EXISTS

, тогда не будет такой ошибки возникать


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson