2015-09-09 2 views
1

Я экспортировал базу данных из MySQL версии 5.5.40, но когда я импортирую ее в MySQL 5.5.44, я получаю сообщение об ошибке в отношении синтаксиса.Ошибка MySQL: 1064 при импорте базы данных

CREATE TABLE IF NOT EXISTS `key_value` (
    `collection` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'A named collection of key and value pairs.' 
`value` longblob NOT NULL COMMENT 'The value.', 
    PRIMARY KEY (`collection`,`name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Generic key-value storage table. See the state system for…'; 

получил Ошибка:

ERROR 1064 (42000): 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 '`value` longblob NOT NULL COMMENT 'The value.', 
    PRIMARY KEY (`collection`,`nam' at line 3 

Просьба предложить.

+1

вы пропустили запятую «» перед значением LONGBLOB ... –

ответ

0

В таблице нет столбца name, но вы создаете первичный ключ с комбинацией PRIMARY KEY (collection, name). Поэтому просто удалите имя и попробуйте.

Также добавьте ',' после столбца коллекции и столбца значения, как предложено Халидом.

Наконец, вы можете использовать -

CREATE TABLE IF NOT EXISTS `key_value` (
    `collection` VARCHAR(128) CHARACTER SET ASCII NOT NULL DEFAULT '' COMMENT 'A named collection of key and value pairs.', 
`value` LONGBLOB NOT NULL COMMENT 'The value.', 
    PRIMARY KEY (`collection`) 
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='Generic key-value storage table. See the state system for…'; 
+0

я экспортировал существующий, чтобы быть более точной Drupal 8, и я не уверен, как это возможно. – AkiShankar

+0

Возможно, это произошло во время копирования из файла резервной копии, вы можете прочитать резервную копию .sql file..it не должно быть ... –

+0

Добавлен в мой комментарий, когда я открываю файл в редакторе, позже это заявление I find alter table command добавляет поле «имя» в ту же таблицу. ALTER TABLE 'key_value' ADD' name' varchar (128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'Ключ пары ключ-значение. Поскольку KEY является зарезервированным ключевым словом SQL, вместо этого было выбрано имя. '; – AkiShankar

4

раствора в this comment in the drupal.org issue queue, заключается в следующем:

Изменить это:

CREATE TABLE ``key_value`` ( ``collection`` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'A named collection of key and value pairs.' ``value`` longblob NOT NULL COMMENT 'The value.', PRIMARY KEY (``collection``,``name``) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Generic key-value storage table. See the state system for…'

к этому:

CREATE TABLE ``key_value`` ( ``collection`` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'A named collection of key and value pairs.', ``name`` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'The key of the key-value pair. As KEY is a SQL reserved keyword, name was chosen instead.', ``value`` longblob NOT NULL COMMENT 'The value.', PRIMARY KEY (``collection``,``name``) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Generic key-value storage table. See the state system for';

затем удалить это ближе к концу, чтобы предотвратить другую ошибку:

ALTER TABLE ``key_value`` ADD ``name`` varchar(128) CHARACTER SET ascii NOT NULL DEFAULT '' COMMENT 'The key of the key-value pair. As KEY is a SQL reserved keyword, name was chosen instead.';