Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
mysqldump по умолчанию выполняет на блокировку таблицы из всех включенных таблиц. Если у Вас есть много таблиц, которые могут превысить сумму дескрипторов файлов mysql серверного процесса. Попробуйте - таблицы блокировки пропуска или если блокировка обязательна - lock-all-tables.
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html
--lock-all-tables, -xLock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option automatically turns off --single-transaction and --lock-tables.
о mysqldump сообщили yeld что ошибка для больших баз данных (1, 2, 3). Объяснение и обходное решение от MySQL Bugs:
[3 февраля 2007 22:00] Sergei Golubchik This не является действительно ошибкой.
mysqldump по умолчанию имеет - таблицы блокировки включили, что означает, что он пытается заблокировать все таблицы, которые будут выведены прежде, чем запустить дамп. И выполнение ТАБЛИЦ T1, T2 БЛОКИРОВКИ... для действительно большого количества таблиц неизбежно исчерпает все доступные дескрипторы файлов, поскольку БЛОКИРОВКЕ нужны все таблицы, которые будут открыты.
Обходные решения: - таблицы блокировки пропуска отключат такую блокировку полностью. С другой стороны - lock-all-tables сделает mysqldump для использования ТАБЛИЦ СБРОСА С БЛОКИРОВКОЙ ЧТЕНИЯ, которая блокирует все таблицы во всех базах данных (не открывая их). В этом случае mysqldump автоматически отключит - таблицы блокировки, потому что он не имеет никакого смысла, когда - lock-all-tables используется.
Править: Проверьте обходное решение Dave на InnoDB в комментарии ниже.
Если Ваша база данных - то, что большой у Вас есть несколько проблем.
Необходимо заблокировать таблицы для дампа данных.
mysqldump займет очень очень долгое время, и Вашим таблицам будет нужно к заблокированному в это время.
импорт данных по новому серверу также займет много времени.
Так как Ваша база данных будет чрезвычайно неприменимой, в то время как № 1 и № 2 происходят, я на самом деле рекомендовал бы остановить базу данных и использовать rsync для копирования файлов в другой сервер. Это быстрее, чем использование mysqldump и намного быстрее, чем импорт, потому что у Вас нет добавленной IO и ЦП генерации индексов.
В продуктивных средах на Linux многие люди помещают данные Mysql по разделу LVM. Затем они останавливают базу данных, делают снимок LVM, запускают базу данных и копию от состояния остановленной базы данных на их досуге.