Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Выполнение MySQL запросов в Cron Jobs

Доброго времени суток!

Столкнулся с такой проблемой. Мой хостинг провайдер не поддерживает MySQL Events. Но из панели управления CPanel можно включить Cron Jobs.

Как можно настроить Cron для MySQL запросов?

Код, который нужно выполнять каждые 15 мин.

MySQL
1
2
3
4
5
6
7
8
UPDATE wp_posts SET post_content = REPLACE(post_content, 'Oxu.Az', 'Pressaz24.info');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'www.oxu.az', 'www.pressaz24.info');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'Oxu.Az', 'Pressaz24.info');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt, 'www.oxu.az', 'www.pressaz24.info');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'A.S.', '.');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'AytЙ™n SadД±qzadЙ™', '.');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'ГњlviyyЙ™ R. ЖЏli', '.');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'ГњlviyyЙ™ R.ЖЏli', '.');
Буду признателен за помощь!

P.S. Создал 2 файла: script.sql в который добавил вышеуказанный код и mysql.crd, который содержит:

PHP
1
2
3
4
5
[client]
user = имя пользователя
password = мой пароль
host = 127.0.0.1
port = 3306
+ Cron запрос:

PHP
1
1,16,31,46 * * * * mysql --defaults-extra-file=/public_html/cgi-bin/mysql.crd -D presvizb_press < /public_html/cgi-bin/script.sql > /dev/null 2>&1
Получаю ошибку:

/usr/local/cpanel/bin/jailshell: /public_html/cgi-bin/script.sql: No such file or directory
Ответ: Все нормально, разобрался)))
Я в саму команду добавлял код 1,16,31,46 * * * *
а нужно было без них указать...
+ домашнюю директорию изменить....
Спасибо за помощь))
Вопрос: Помогите составить MySQL запрос на выборку из дерева по трём таблицам.

Здравствуйте! Помогите, пожалуйста, правильно составить MySQL запрос на выборку со следующим условием:

Есть три таблицы:
1. TStructure (FID:INT(11), FIDparent:INT(11), FOtdelName:VARCHAR(32)) – хранит дерево структуры предприятия (FID-FIDparent),

2. TUsers (FID:INT(11), FIDstructure:INT(11), FUserName:VARCHAR(64)) – хранит пользователей, принадлежащих какому либо отделу предприятия методом TUsers.FIDstructure=TStructure.FID,

3. TReports (FID:INT(11), FIDStructrueOtdel:INT(11), FReport:VARCHAR(255)) – таблица с отчётами, принадлежащими какому либо отделу предприятия методом TReports.FIDStructrueOtdel=TStructure.FID.

TUsers.FIDstructure заранее известен. TReports.FIDStructrueOtdel может совпадать, а может и не совпадать с TUsers.FIDstructure, т.к. первый может указывать, в том числе, и на дочерние отделы, к которым пользователь не принадлежит на прямую, а только через родительское отношение в дереве TStructure. Составьте или помогите составить SELECT запрос так, чтобы получить все записи из таблицы TReports, принадлежащие и дочерние отделу, к которому относится пользователь (TUsers.FIDstructure).

P.S.: Не судите строго, первый раз прошу так в наглую, но заработался до того, что совсем отупел, думать больше не могу, еле пост написал, не спал 35 часов и времени отоспаться не дают. Помогите, пожалуйста, составьте для меня этот запрос.
Ответ: как то так
SELECT * FROM TReports r
JOIN (SELECT @index:=INSTR(@a,',') as coma_index,
@id:=SUBSTRING_INDEX(@a, ',', 1)  as id,
@a:=SUBSTRING(@a,IF(@index,@index+1,0)),
@a:=CONCAT_WS(IF(LENGTH(@a)>0,',',''),@a,(SELECT group_concat(FID) FROM TStructure WHERE FIDparent=@id)) as array
FROM TStructure,(SELECT @a:=${FIDstructure_Param}) as init
WHERE LENGTH(@a)>0) as m ON r.FIDStructrueOtdel=m.id
Вопрос: MySQL запрос

Всем доброго вечера (хотя уже ночь)
Помогите, пожалуйста, составить mysql запрос.
Есть таблицы pharms(`id`), field_values(`id`, `field_id`, `pharm_id`, `field_value`).
Необходимо выбрать все строки из pharms, для которых в таблице field_values в строке `pharm_id`=pharms.id AND `field_id` = '1' столбец `field_value` = 'asd'. Надеюсь объяснил понятно
Спасибо заранее за любую помощь.
Ответ: altevg,

Код SQL
1
SELECT*FROM`pharms`JOIN(`field_values`)ON(`pharms`.`id`=`field_values`.`pharm_id`)WHERE`field_id`="1"
Вопрос: GoldenGate MySQL запросы к information_schema

Добрый день, коллеги.

Прошу выручить меня...
GG постоянно долбит источник этим запросом:

select * from information_schema.tables where table_schema='my_schema' and table_name='my_tab' and engine='MyISAM'


Запрос сам по себе тяжелый и постоянная долбёжка вешает базу.
Но основная проблема в том, что таблица my_tab имеет другой engine = InnoDB.
Почему ГГ привязался к MyISAM?
Ответ:
XmarkerX
Oracle GoldenGate Command Interpreter for MySQL
Version 12.1.2.1.2 20133048 OGGCORE_12.1.2.1.0OGGBP_PLATFORMS_141228.0533
Linux, x64, 64bit (optimized), MySQL Enterprise on Dec 28 2014 06:58:34
Operating system character set identified as UTF-8.


тащим несколько таблиц, вот код экстракта:

EXTRACT XLOAD50
SOURCEDB ..., USERID gguser, PASSWORD ...
RMTHOST ..., MGRPORT ...
RMTTRAIL ./dirdat/50
RMTHOSTOPTIONS TCPBUFSIZE 100000, TCPFLUSHBYTES 300000, TIMEOUT 1800, NOSTREAMING
TRANLOGOPTIONS ALTLOGDEST .../mysql-bin.index

TABLE my_tab1;
TABLE my_tab2;
TABLE my_tab3;
как минимум стоит обновить до gg до 12.2
Вопрос: MySQL запросы висят в статусе Copying to tmp table по 30-40 секунд

Подскажите, уважаемые, с чем может быть связана следующая проблема и как её решить:
Есть выделенный под MySQL сервер на Windows 2008R2. Ресурсов предостаточно: 8-ми ядерный i7, 24 гига памяти. Основные настройки мускула такие:
max_connections=10
tmp_table_size=16000M
max_heap_table_size=16000M
key_buffer_size=22000M
read_buffer_size=1024M
read_rnd_buffer_size=512M
sort_buffer_size=512M
join_buffer_size=16M
default-storage-engine=MYISAM
На сервере через планировщик заданий запускаются PHP скрипты, в которых выполняются задачи по обработке больших объёмов данных (циклические запросы к MySQL), результаты отправляются на веб-сервер.
Проблема состоит в том, что при запуске одной-двух задач запросы обрабатываются за приемлемое время (1-3 секунды). При запуске трех и более задач начинаются очень большие тормоза, те же самые запросы висят по 30-40 секунд, в статусе Copying to tmp table.
При этом таблицы в запросах не пересекаются, взаимных блокировок нет, даже базы данных могут быть разными. Тем не менее есть четкая зависимость между количеством одновременно выполняемых задач и временем их выполнения. Такое ощущение, что не хватает каких-то ресурсов.
При этом загрузка процессора, например, при выполнении трех задач 25%, т.е. три ядра заняты даже не на 100%, памяти мускул забрал себе 5.8 гигов и больше не хочет. Нагрузка на диски нулевая (все таблицы кешируются Windows), таблицы MyISAM.
Если смотреть show status, то видим в частности:
Created_tmp_disk_tables 0
Created_tmp_files 16
Created_tmp_tables 0
Буду признателен за подсказку, каких ресурсов/настроек может не хватать и как это пофиксить.
Ответ: Обращаю внимание админов, что это не решение, а промежуточный пост в топике из 3-х или более страниц (уже не помню), достаточно содержательных. Зачем их было удалять, чтобы оставить какую-то ерунду в качестве "решения" - совершенно непонятно.
Вопрос: Как составить корректный MySQL-запрос

Привет всем!
Товарищи эксперты, требуется Ваша помощь!

Есть 3 таблицы с записями (см. рис.)



И есть запрос вида:

"SELECT * FROM `table_users` LEFT JOIN `table_post` USING (userhash)";

Он возвращает записи сгруппированные, из 2ух таблиц `table_users` и `table_post`, которые объединены по одному полю `userhash`.

Вопрос:
Каким должен быть запрос, чтобы из результатов данной выборки исключить все записи, кроме той, котрая отмечена в третьей таблице `table_like`.
Т.е. поля userhash и contenthash выбранной записи должны совпадать со значениями полей userhash и contenthash из таблицы table_likes.
На прилагаемом рисунке искомая запись из трех таблиц обведена красным контуром.

Возможно, для решения данной задачи необходимо будет соорудить некую конструкцию на подобии этой:

"SELECT * FROM (SELECT * FROM `table_users` LEFT JOIN `table_post` USING (userhash)) некие условия выборки с использованием таблицы table_likes";

но подробности такого запроса для меня остаются весьма туманными. Надеюсь на Ваше просвещение.

Заранее спасибо за консультацию!
Ответ: _ViPeR_, огромное спасибо за ответ! Пойду прикручивать! =)
Вопрос: Помогите составить MySQL-запрос

Привет всем!
Товарищи эксперты, требуется Ваша помощь!

Есть 3 таблицы с записями (см. рис.)



И есть запрос вида:

"SELECT * FROM `table_users` LEFT JOIN `table_post` USING (userhash)";

Он возвращает записи сгруппированные, из 2ух таблиц `table_users` и `table_post`, которые объединены по одному полю `userhash`.

Вопрос:
Каким должен быть запрос, чтобы из результатов данной выборки исключить все записи, кроме той, котрая отмечена в третьей таблице `table_like`.
Т.е. поля userhash и contenthash выбранной записи должны совпадать со значениями полей userhash и contenthash из таблицы table_likes.
На прилагаемом рисунке искомая запись из трех таблиц обведена красным контуром.

Возможно, для решения данной задачи необходимо будет соорудить некую конструкцию на подобии этой:
"SELECT * FROM (SELECT * FROM `table_users` LEFT JOIN `table_post` USING (userhash)) некие условия выборки с использованием таблицы table_likes";
но подробности такого запроса для меня остаются весьма туманными. Надеюсь на Ваше просвещение.

Заранее спасибо за консультацию!
Ответ: pand, все правильно поняли) Спасибо за ответ! left join по неопытности прикрутил
Вопрос: Помощь в оптимизации MySQL запроса

Здравствуйте!

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

Запрос(выполняется более 2-х минут): http://pastebin.com/FS7sScaG

И его EXPLAIN: https://www.dropbox.com/s/3w7cbiugkoxqh1h/explain.png?dl=0


Как я понимаю, все тормоза из-за того что не используется pripary key из таблицы users. А вот почему?
Ответ: Я конечно могу не группировать по object.id и тогда у меня будут повторяться строки из object в выборке, обрабатывать это уже в коде, но кто-то мне это не нравится. Ведь SQL такая мощная вещь, и структура БД у меня вроде более или менее валидная..
Вопрос: Mysql запрос

Доброе время суток!

Оговорюсь, я новичок как в mysql, так и на данном форуме.

Мне нужен триггер, который бы по обновлении ячейки перезаписывал бы ячейку в другой базе данных. Я написал вот такой триггер:

CREATE DEFINER = 'username'@'localhost' TRIGGER 'pref_users_after_upd_tr1' AFTER UPDATE ON 'db'.'pref_users'
  FOR EACH ROW
BEGIN
INSERT INTO 'dbtarget'.'pref2_users' Set user_birthday = NEW.user_birthday2; 
END;


Где db - исходная база данных с таблицей pref_users и ячейкой user_birthday, из которой берутся данные, а dbtarget - это база данных, в которой содержится таблица pref2_users и целевая ячейка user_birthday2 этой таблицы, в которую надо записать данные.
Но прежде, чем изменять бд, я бы хотел, чтобы его проверил разбирающийся в запросах и триггерах человек.

Заранее спасибо.
Ответ: INSERT INTO 'dbtarget'.'pref2_users' Set user_birthday = NEW.user_birthday2
вам же нужен UPDATE?
и уточните WHERE Идентификатор=..... - какую запись апдейтить
Вопрос: PHP MySQL запрос строк между определенными TIMESTAMP

Доброго.

Есть таблица. В каждой записи пишется TIMESTAMP.
Строк тысячи.
При запросе указываются две даты от и до:
out.php?from=2015-10-28%2013:11:11&to=2015-10-30%2015:12:13

Как на PHP написать запрос на выборку строк именно между этими временами?
(Пож помогите, щас голову сломаю.)
Ответ:
Спасибо.
Вот этот запрос дает правильный отклик:
$query = "SELECT * FROM ScalesData WHERE ServerDataTime between '{$From}' and '{$To}'";