Задавайте вопросы, мы ответим
Вы не зашли.
В ДБ идут таблицы, сколько таблиц не известно, но надо взять последнею, команды ордер на SHOW TABLES не работают, прав на выдачу из системных таблиц нету. Единственный вариант, что мне пришёл в голову:
Неактивен
Вообще такие вещи из information_schema нужно тянуть...
Что-то вроде
Неактивен
Я создаю таблицы нумерованные. В системные таблицы доступа нету. Только запросы обычного юзера доступны.
Неактивен
А номер последней таблицы Вам известен при запросе? Если нет, то может быть имеет смысл его где-то хранить? - в этом случае проблема исчезнет автоматически.
Если у таблиц одинаковые имена, то можно поиграть с like и substr при сортировке - то есть откусить имя таблицы, привести строку к целому числу и отсортировать по убыванию.
Неактивен
Сохранить где-то, не думаю, что надёжно. Вообще дело обстоит так, в таблицах есть поле, которое накручивается по auto incriment, когда данное число переваливает за отметку в 999.999, создастся вторая таблица с именем 1 (первая была 0), и начальным инкрименентом в 1.000.000 . Вот и изходя из этих раскладов, мне надо выдёргивать актуально последнию таблицу, при создание запроса на добавку данных.
Неактивен
Не очень понимаю в чем ненадежность сохранения нового номера при создании очередной таблицы . Впрочем даже если - вариант с like/substr Вам подошёл?
Неактивен
Я еще от себя добавлю.
1. ДБ — это даза банных. А по-русски пишут: «БД»
2. Преждевременная оптимизация — корень зла;
3. Вы пытаетесь искусственно сделать партиционирование. Может быть,
использовать уже встроенный в MySQL механизм?
4. INFORMATION_SCHEMA — не честная база, у Вас есть доступ оттуда
читать.
Неактивен
deadka,
Не понимаю, можно примером?
paulus,
1. Извините, привычка, DB - DataBase
2. Верю, но выполняю задание, не больше не меньше
3. Насколько я понимаю встроенный механизм, он разделяет файлы, а мне надо разделить по меткам, на сервере где идут запросы, все таблицы FEDERATED, где будут их части в будущем, сейчас не могу даже предположить.
4. Ну сейчас доступ есть, так как сижу на локальном компе под рутом, а на хостинге этого доступа нету.
Неактивен
К сожалению, синтаксис show tables не позволяет сортировать результат, так что без обращения к information_schema трюк с like/substr не проходит. точнее с like все нормально -
Неактивен
ну я вроде как тоже самое в начале писала
Неактивен
Да, почти то же самое. Только так оно, увы, не сработает.
Вот допустим есть таблицы
tab_1
tab_2
tab_3
tab_4
tab_5
tab_6
tab_7
tab_8
tab_9
tab_10
tab_11
tab_12
tab_20
tab_21
mysql> show tables like 'tab_%';
+---------------------------+
| Tables_in_sqlinfo (tab_%) |
+---------------------------+
| tab_1 |
| tab_10 |
| tab_11 |
| tab_12 |
| tab_2 |
| tab_20 |
| tab_21 |
| tab_3 |
| tab_4 |
| tab_5 |
| tab_6 |
| tab_7 |
| tab_8 |
| tab_9 |
+---------------------------+
14 rows in set (0.00 sec)
Как видите, последней в списке будет табличка tab_9, а нужно, чтобы была tab_21.
Модифицируйте свой php-код так, чтобы каждый раз при получении названия очередной таблицы из списка "откусывался" ее номер и он сравнивался с текущим максимальным номером - почти задача на поиск максимального элемента. Тем самым к концу прохода Вы получите искомую таблицу.
Неактивен
А теперь убери буквы из имён
Неактивен
substr СОРД
Неактивен
А какая версия MySQL на хостинге, если не секрет? У меня ощущение, что
у Вас там MySQL по крайней мере пятилетней выдержки. Даже сильно огра-
ниченные в правах пользователи могут читать из базы INFORMATION_SCHEMA.
Нужно только поверить в свои силы и не полениться попробовать:
mysql> SHOW GRANTS; +---------------------------------------------------+ | Grants for lucky@localhost | +---------------------------------------------------+ | GRANT USAGE ON *.* TO 'lucky'@'localhost' | | GRANT SELECT ON `test`.`a` TO 'lucky'@'localhost' | +---------------------------------------------------+ 2 rows in set (0.00 sec) mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | a | +----------------+ 1 row in set (0.00 sec) mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test'; +------------+ | TABLE_NAME | +------------+ | a | +------------+ 1 row in set (0.00 sec)
Неактивен