У меня есть PHP-скрипт, который я запускаю через nohup, у которого эта проблема была в середине с MySQL. Мой скрипт проходит через пару сотен баз данных и выполняет миграцию схемы через. (все та же схема)
`system("mysql --host=$db_host --user=$db_user --password=$db_password -v -v -v $database < ../update.sql");`
В середине миграций это происходит:
--------------
ALTER TABLE `phppos_customers` ADD `current_sales_for_discount` int(10) NOT NULL DEFAULT '0' AFTER `current_spend_for_points`
--------------
Terminal close -- sending "KILL QUERY 966" to server ...
Terminal close -- query aborted
Aborted
Сценарий php продолжает работать, и другие базы данных не имеют этой проблемы. Что вызвало бы это?
PHP скрипт запускается через:
nohup php update_pos_databases.php > results.txt 2>&1 </dev/null &
Это на Mac OS X 10.11.3
Вот мои значения времени ожидания:
mysql> SHOW VARIABLES LIKE "%_timeout";
+-----------------------------+----------+
| Variable_name | Value |
+-----------------------------+----------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| have_statement_timeout | YES |
| innodb_flush_log_at_timeout | 1 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| rpl_stop_slave_timeout | 31536000 |
| slave_net_timeout | 60 |
| wait_timeout | 28800 |
+-----------------------------+----------+
13 rows in set (0.00 sec)
Какие из них я должен изменить?
Вот больше информации о коде:
foreach($databases as $database)
{
echo "Running queries on $database\n***********************************\n";
system("mysql --host=$db_host --user=$db_user --password=$db_password -v -v -v $database < ../update.sql");
echo "\n\n";
}
Пара предложений (найдена в старой ветке reddit):
Используйте «disown» после запуска команды nohup. например
nohup php update_pos_databases.php > results.txt 2>&1 </dev/null &
disown %1
или же:
Используйте «экран» вместо nohup.
Других решений пока нет …