Как найти механизм хранения временных таблиц MySQL

Привет, я работаю с временной таблицей, и я хотел бы знать механизм хранения временных таблиц (InnoDB, MyISAM ....)

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

$engine="SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND `TABLE_NAME`='temporary_table'";
$export = mysql_query($engine, $connection) or die ("Sql error : ".mysql_error());
while ($row = mysql_fetch_array($export, MYSQL_BOTH)) {
    printf ("ENGINE: %s ---", $row[0]);
}

Но тот же код работает, когда я пытаюсь найти механизм хранения для физических таблиц в моей БД?

Любая помощь высоко ценится.!! Спасибо.


person DonOfDen    schedule 30.04.2013    source источник
comment
Я получил ошибку: E_TOO_MANY_CAPITAL_LETTERS.   -  person Jocelyn    schedule 30.04.2013
comment
но я получаю следующий ответ для своих физических таблиц ENGINE: InnoDB   -  person DonOfDen    schedule 30.04.2013


Ответы (2)


К сожалению:

В настоящее время в таблице [INFORMATION_SCHEMA.]TABLES нет ВРЕМЕННЫХ таблиц.

Я бы посоветовал разобрать результат SHOW CREATE TABLE temporary_table;

Чтобы извлечь только ДВИГАТЕЛЬ этого возвращаемого значения:

$rset = mysql_query('SHOW CREATE TABLE temporary_table;')
$row = mysql_fetch_array($rset, MYSQL_BOTH);
preg_match('/ENGINE\=(?P<engine>\w+)/', $row[1], $matches);
echo $matches['engine'];
person RandomSeed    schedule 30.04.2013
comment
Привет Як! Спасибо за ваш ответ. Но я хочу знать только Storage Engine. Я разработал ваш запрос, он дает все детали таблицы. Но я хочу только механизм хранения. Есть ли другой способ? - person DonOfDen; 30.04.2013
comment
Что ж, немного поработав с регулярными выражениями, вы сможете извлечь нужную информацию. Если время позволит, я вернусь с примером. - person RandomSeed; 30.04.2013
comment
Привет, я использую приведенный ниже запрос для создания временной таблицы: CREATE TEMPORARY TABLE csv_import (id INT, entitiy_id INT, attribute_id INT, значение TEXT) ENGINE MyISAM Я хочу убедиться, что таблица создана в MyISAM. - person DonOfDen; 30.04.2013
comment
@TomPHP - если вы сделаете такое заявление, то движком будет MyISAM. В чем смысл вашего вопроса? Почему вам нужно убедиться, что это таблица MyISAM, если ваш create table указывает это? - person N.B.; 30.04.2013
comment
На самом деле, когда пользователь работает с приложением, ему нужно знать, из какого механизма временного хранения поступают данные... Потому что он изменит механизм хранения по своему желанию, когда будет работать над ним.! Поэтому после создания временной базы данных они нажимают кнопку, чтобы узнать механизм хранения. Поэтому в действии кнопки я проверяю механизм временной таблицы. Так понятно..? Это требование. Я пытаюсь найти решение. - person DonOfDen; 30.04.2013
comment
Почему мой вопрос в пониженном рейтинге? - person DonOfDen; 30.04.2013
comment
Привет Як! Можете ли вы связать меня с этим примером! - person DonOfDen; 30.04.2013
comment
Пользователем здесь является администратор.. который работает с БД..! Найдешь ли ты в нем какие-нибудь глупости! Надеюсь, теперь вы понимаете, что пользователи — это не всегда те, кто сидит и просто смотрит на сайт, даже АДМИН — это пользователь..!! - person DonOfDen; 30.04.2013
comment
Так? Какую релевантную информацию можно экстраполировать, зная, что некоторая временная таблица (которой уже нет к тому времени, когда пользователь читает сообщение) относится к определенному движку? Какая разница для пользователя? Вы вообще знаете разницу между двигателями? Вы понимаете, что если вы говорите, что ДВИГАТЕЛЬ = МЙИСАМ, то этот двигатель есть и всегда будет МЙИСАМ? - person N.B.; 30.04.2013
comment
Привет, Н.Б. Если вы можете сообщить мне свои идеи, чтобы найти его ..! не все так решается! просто комментируя... Это решение может помочь другим... как и мне. - person DonOfDen; 30.04.2013
comment
Нет, это никому не может быть полезно, ваш вопрос невероятно бессмысленный, но вы просто не можете его понять. - person N.B.; 30.04.2013
comment
Это требование .. которое я должен предоставить для него решение .. Пользователю это нужно для бла-бла .. - person DonOfDen; 30.04.2013
comment
Пожалуйста, @N.B., если вы считаете вопрос бессмысленным, вам не нужно на него отвечать. Я полагаю, вы проголосовали за закрытие вопроса, спасибо за ваш вклад. - person RandomSeed; 30.04.2013
comment
Мне не нужно, но я хочу. Спасибо, что помогли мне понять это. - person N.B.; 30.04.2013
comment
@Н.Б. Без знания контекста приложения невозможно делать такие заявления. Приложение может быть приложением для управления базой данных, и в этом случае работа с внутренними компонентами БД не только допустима, но и ожидаема. - person Kami; 30.04.2013
comment
Конечно, можно делать такие заявления. Если вы укажете, что table engine = MYISAM, то это MyISAM, а не волшебный единорог. Период. Теперь, что касается запроса клиента, независимо от того, насколько он запаздывает, это не меняет того факта, что движком таблицы будет быть MyISAM, если не указано иное (или если оператор движка опущен, когда по умолчанию используется временная таблица). ПАМЯТЬ). Кроме того, приложение для управления базой данных, выполненное новичком? Не шутите, пожалуйста :) - person N.B.; 30.04.2013
comment
Привет, Ками, Як и Н.Б.: Я пробовал с кодом Яка.. Он ничего не показывает эхом... когда я привязал эхо к тому, что эхо $row[0].. Оно повторяет имя моей временной таблицы. Я делаю что-то неправильно? - person DonOfDen; 30.04.2013
comment
@TomPHP Да, я сделал ошибку в своей первой версии. Желаемый результат находится в $row[1] (ответ обновлен) - person RandomSeed; 30.04.2013
comment
Они мне очень помогли и заставили задуматься... Ниже приведен код, который я редактировал из Yak! $rset = mysql_query('SHOW CREATE TABLE временная_таблица_имя'); $row = mysql_fetch_array($rset, MYSQL_BOTH); preg_match('/ENGINE\=(?P‹engine›\w+)/', $row[1], $matches); echo Совпадения:.$matches['engine']; Вывод: Совпадения: MyISAM Всем спасибо, ребята! Надеюсь, это поможет другим! - person DonOfDen; 30.04.2013
comment
Превосходно! Як.. Спасибо за ваше время..! - person DonOfDen; 30.04.2013
comment
Конечно, он скажет, что это MyISAM. Ваш CREATE TABLE так указал. Почему ты бегаешь по кругу без причины? - person N.B.; 30.04.2013
comment
Привет, Н.Б. Даже я могу это понять, Даже я тоже говорил то же самое, почему, но Админ хотел это знать! Это требование.. Как программист, мы должны это сделать.. Я предложил ваше решение, но динамически они изменят имя двигателя.. Чтобы подтвердить это, им нужно это небольшое решение.. Они будут работать в интерфейсе.. .. в одиночку.. Интерфейс генерирует Запросы для Админа... Я не могу просто бороться с ними... Это требование.! - person DonOfDen; 30.04.2013
comment
@TomPHP - я не спорю, чего хочет ваш клиент, я просто пытаюсь сказать вам, что вы бегаете по кругу ... но эй, все, что работает для вас. - person N.B.; 30.04.2013
comment
Ваше здоровье! Н.Б. Позвольте мне подумать о других требованиях. :) - person DonOfDen; 30.04.2013

Вам нужно выполнить поиск в хранилище временных таблиц information_schema.temporary_tables или в глобальном хранилище временных таблиц information_schema.global_temporary_tables.

Пытаться

`SELECT ENGINE FROM information_schema.temporary_tables WHERE TABLE_SCHEMA='test' AND `TABLE_NAME`='temporary_table'`
person Kami    schedule 30.04.2013
comment
Привет, Ками. Я получаю следующую ошибку: Ошибка Sql: Неизвестная таблица 'temporary_tables' в information_schema - person DonOfDen; 30.04.2013
comment
Это может относиться к другому движку БД, но я боюсь, что не найду ссылки на таблицу information_schema.temporary_tables в MySQL. Вы имеете в виду Percona вместо MySQL? - person RandomSeed; 30.04.2013
comment
Привет, я использую приведенный ниже запрос для создания временной таблицы: CREATE TEMPORARY TABLE csv_import (id INT, entitiy_id INT, attribute_id INT, значение TEXT) ENGINE MyISAM Я хочу убедиться, что таблица создана в MyISAM. - person DonOfDen; 30.04.2013
comment
Они мне очень помогли и заставили задуматься... Ниже приведен код, который я редактировал из Yak! $rset = mysql_query('SHOW CREATE TABLE временная_таблица_имя'); $row = mysql_fetch_array($rset, MYSQL_BOTH); preg_match('/ENGINE\=(?P‹engine›\w+)/', $row[1], $matches); echo Совпадения:.$matches['engine']; Вывод: Совпадения: MyISAM Всем спасибо, ребята! Надеюсь, это поможет другим! - person DonOfDen; 30.04.2013