У меня есть php-скрипт, который я запускаю через nohup, у которого была эта проблема в середине его с mysql. Мой скрипт проходит через пару сотен баз данных и выполняет миграцию схемы через. (Все же схема)nohup php script 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";
}
Похоже, вы получаете тайм-аут от mysql. 'SHOW VARIABLES LIKE"% _timeout "' (пожалуйста, отредактируйте/добавьте результат в свой ответ), чтобы получить список релевантных переменных с сервера. Осмотрите 'connect_timeout',' wait_timeout', 'interactive_timeout', возможно, один из них слишком низок. – maxhb
Я добавил информацию к вопросу. Являются ли эти значения в секундах или миллисекундах? Какой я должен изменить? Какие хорошие ценности? –
Как вы думаете, это innodb_lock_wait_timeout? –