SQL проверка существования таблицы

Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Приветствую, есть задача, создавать новую таблицу раз в месяц, как чекать её существования?
Чекать придется каждый раз, когда заходит игрок, думал на счет CREATE TABLE IF NOT EXISTS, что бы сразу создать таблицу если ее нету, но кажется такой способ не самый удачный для каждого коннекта.
 
Сообщения
207
Реакции
420
Помог
10 раз(а)
Если MySQL - как вариант SHOW TABLES и в итоговой таблице с одной колонкой проверять наличие своей.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
CrazyHackGUT, ну, как вариант да, но их там может быть сотни таблиц допустим
21 Фев 2020
CrazyHackGUT, все, сообразил, SHOW TABLES LIKE 'table';
21 Фев 2020
Еще один вариант сработал
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'players_statistics1';
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Еще один вопрос по ходу дело, у меня база будет, в ней одна таблица, за год, скорее всего там наберется под 1млн строк, это вообще много мало, или копейки? :D
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
[HIDE]20941??????????????????????????????????????????????????????????????????????

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

создавать новую таблицу раз в месяц, как чекать её существования?
Чекать придется каждый раз, когда заходит игрок, думал на счет CREATE TABLE IF NOT EXISTS, что бы сразу создать таблицу если ее нету, но кажется такой способ не самый удачный для каждого коннекта.
Да, очень информативно, зачем тебе таблица и как ты ее используешь мы тоже смогли понять.

Если MySQL - как вариант SHOW TABLES и в итоговой таблице с одной колонкой проверять наличие своей.
...

у меня база будет, в ней одна таблица
Приветствую, есть задача, создавать новую таблицу раз в месяц, как чекать её существования?
Чекать придется каждый раз, когда заходит игрок, думал на счет CREATE TABLE IF NOT EXISTS
скорее всего там наберется под 1млн строк
о вообще много мало, или копейки?
Что за строки? Сколько весит 1 символ? Какой тип столбца для строки(как хранишь? Байты или строкой?)? Зачем?[/HIDE]
 
Сообщения
1,701
Реакции
1,512
Помог
26 раз(а)
На старте плагина создавай таблицу с "датой" (с проверкой на наличие настпупившей даты и на наличие таблицы) и в неё делай запросы.
Но это если тебе надо данные по месяцам, если же у тебя в таблице пушатся данные с датой, то проще просто их показывать с уловием на месяц.
 
  • Нравится
Реакции: ifx
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Да, очень информативно, зачем тебе таблица и как ты ее используешь мы тоже смогли понять.
А что еще нужно указать? Была задача, раз в месяц создавать таблицу и все, но сейчас уже эта задача отпала )

А выше цитаты, где я якобы сказал будет две таблицы, а потом одна, это разные задачи и разные базы, поэтому я указал по ходу дело спрошу другой вопрос, не относящейся к этой теме.

Что за строки? Сколько весит 1 символ? Какой тип столбца для строки(как хранишь? Байты или строкой?)? Зачем?
5 столбцов, все данные типа varchar( 64 ), один столбец id, в сутки по ~2к строк
28 Фев 2020
На старте плагина создавай таблицу с "датой" (с проверкой на наличие настпупившей даты и на наличие таблицы) и в неё делай запросы.
Но это если тебе надо данные по месяцам, если же у тебя в таблице пушатся данные с датой, то проще просто их показывать с условием на месяц.
Не получится на старте карты, карта может идти час, а может вообще ночной режим с 11 до 11 идти, в этом промежутки у меня не будет чекатся создание базы, поэтому либо каждый коннект, либо по таску уж.

В принципе пофигу, так-как задачу решили уже, все таки будет одна таблица с датой, как ты и предложил
28 Фев 2020
Shel, и да, предложи свой вариант проверки существования таблицы
 
Сообщения
64
Реакции
131
Помог
4 раз(а)
Во первых эта таблица не для тебя создана, не используй ее никогда, актуальных данных ты там никогда не найдешь
Что за чушь?

а до первого запроса к реальной таблице там вовсе не будет никаких данных.
Сам придумал?
Bash:
mysql -e "SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'mysql';"
+---------------------------+
| TABLE_NAME                |
+---------------------------+
| transaction_registry      |
| roles_mapping             |
| innodb_table_stats        |
| time_zone_transition_type |
| time_zone_name            |
| general_log               |
| db                        |
| event                     |
| table_stats               |
| innodb_index_stats        |
| user                      |
| time_zone_leap_second     |
| plugin                    |
| host                      |
| time_zone                 |
| gtid_slave_pos            |
| index_stats               |
| func                      |
| columns_priv              |
| servers                   |
| proc                      |
| time_zone_transition      |
| help_relation             |
| help_topic                |
| help_keyword              |
| slow_log                  |
| tables_priv               |
| column_stats              |
| help_category             |
| procs_priv                |
| proxies_priv              |
+---------------------------+
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
Я ничего не предлагал, ты путаешь.
Напиши конкретно задачу. Можешь под хайд. Без нее ждать ответа на последний вопрос не стоит.
 
Сообщения
1,032
Реакции
828
Помог
10 раз(а)
Shel, задача простая, записывать игроков в базу при подключении, ID( Инкремент ), SID, IP, NickName, MSName, Status
Была задача раз в месяц создавать новую таблицу, что бы данные в таблице были ровно за месяц, ~60к строк.

Когда появляется новый месяц - создавать новую таблицу, поэтому перед созданием, надо проверять, есть она уже или нет, вопрос остался чисто риторический, как проверить существовании таблицы, и если ее нет то создать.

Почему риторический, потому что я добавил просто дату коннекта, таблица одна. На сайте будут строится различные графики с выборкой по дате, так-как 1кк строк не беда, думаю, то ничего страшного, такие данные за год с трудом может быть наберутся только.
 
Сообщения
443
Реакции
319
Помог
13 раз(а)
Так и пиши, задача логировать заходы игроков использующих различные клиенты.
Пиши в одну таблицу. Тебе не нужно несколько.

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


Скрытое содержимое могут видеть только пользователь группы: Web Dev, Администратор, Куратор, Маппер, Моделлер, Модератор, Проверенный, Разработчик, Скриптер
 
Последнее редактирование:

Ayk

Сообщения
763
Реакции
478
Помог
19 раз(а)
Javekson, ещё вариант: сделать дату (месяц_год) частью названия таблицы, и далее: create table if not exists
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу