Таблицы InnoDB существуют в MySQL, но говорят, что они не существуют после копирования базы данных на новый сервер - PullRequest
6 голосов
/ 25 мая 2011

Я использовал mysqldump для экспорта своей базы данных, а затем импортировал ее в MySQL на другом сервере.Теперь я могу видеть все свои таблицы, если я «показываю таблицы», но на самом деле я не могу выбрать ни одну из них или описать их.не существует

Все мои таблицы InnoDB.Я видел одну проблему, которую люди имели, когда они использовали old_passwords, поэтому я явно установил это значение в 0 в my.cnf и убедился, что все пароли в таблице mysql были 41 шестнадцатеричной цифрой, как и должно быть для новых паролей.*

Ответы [ 3 ]

7 голосов
/ 26 мая 2011

причина "показывать таблицы"; работает потому, что mysqld будет сканировать каталог базы данных только для файлов .frm. Пока они существуют, он видит определение таблицы.

Если вы импортировали данные в MySQL, и это сообщение об ошибке появляется, первое, что я немедленно сделал бы, это запустил эту команду: (Кстати, это MySQL 5.1.45, но в любом случае работает в MySQL 5.x)

mysql> show engines;
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine     | Support | Comment                                                        | Transactions | XA   | Savepoints |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB     | YES     | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE  | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| CSV        | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MEMORY     | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED  | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
| ARCHIVE    | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MyISAM     | DEFAULT | Default engine as of MySQL 3.23 with great performance         | NO           | NO   | NO         |
+------------+---------+----------------------------------------------------------------+--------------+------+------------+
8 rows in set (0.00 sec)

Если сервер, на который вы импортировали данные, говорит, что InnoDB отключен, то у вас большая проблема. Вот что вы должны сделать:

1) Удалить все данные с нового сервера БД импорта

2) Очистка InnoDB Setup

3) запустить ПОКАЗАТЬ ДВИГАТЕЛИ; и убедитесь, что InnoDB полностью работоспособен !!!

4) Перезагрузите mysqldump на новый сервер импорта

Попробуй !!!

2 голосов
/ 26 мая 2011

У меня была эта проблема, когда я перешел с сервера Windows на сервер Linux.Таблицы являются файлами, а файлы Windows не чувствительны к регистру, но файлы linux чувствительны к регистру.

В моем приложении в запросах sql иногда я использовал имена таблиц в верхнем регистре, а в других случаях строчные, поэтому иногдатот же результат, что и у вас.

0 голосов
/ 03 апреля 2013

В моем случае это был SQLCA.DBParm параметр.

Я использовал SQLCA.DBParm = "Databse = "sle_database.text"", но это должно быть

SQLCA.DBParm = "Database='" +sle_database.text+ "'"

Объясните: вы собираетесь объединить три строки:

a) Database='               - "Database='"

b) (name of the database)   - +sle_database.text+

c) ' - "'"
...