Вы используете объект, содержащий ссылку нулевого значения. Таким образом, он дает пустое исключение. В примере строковое значение равно null, и при проверке его длины произошло исключение.
Пример:
string value = null;
if (value.Length == 0) // <-- Causes exception
{
Console.WriteLine(value); // <-- Never reached
}
Ошибка исключения:
Необработанное исключение:
System.NullReferenceException: ссылка на объект не установлена в экземпляр объекта. в Program.Main ()
blockquote>
Проблема заключается в ON UPDATE CURRENT_TIMESTAMP
. Вы должны быть в состоянии отменить это поведение с помощью оператора alter, подобного этому (не уверен, что такое имя вашей таблицы):
ALTER TABLE leads MODIFY added_on TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
Если вы хотите контролировать метку времени, просто измените ее на DATETIME, а затем обновите ее самостоятельно, когда хотите с помощью added_on=NOW()
. Это то, что я делаю, чтобы избежать осложнений, тогда вы можете быть уверены что у вас есть полный контроль над ним, что также полезно для архивирования или перемещения данных между таблицами, потому что вы не хотите, чтобы временная метка обновлялась в этом случае.
Вы добавили условие ON UPDATE
в столбец !! Чтобы удалить это, переопределите столбец как
ALTER TABLE `mytable` MODIFY `added_on` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
Это эффективно устранит условие ON UPDATE
.
Первый TIMESTAMP таблицы, по умолчанию имеет значение UPDATE CURRENT_TIMESTAMP. Чтобы предотвратить это (вместо изменения таблицы после этого), см. Здесь docs MySQL :
В столбцах TIMESTAMP и DATETIME нет автоматических свойств, если они не указаны явно, при этом Исключение: по умолчанию первый столбец TIMESTAMP имеет как DEFAULT CURRENT_TIMESTAMP, так и ON UPDATE CURRENT_TIMESTAMP, если они не указаны явно. Чтобы подавить автоматические свойства для первого столбца TIMESTAMP, используйте одну из следующих стратегий:
1) Включите системную переменную explicit_defaults_for_timestamp. Если эта переменная включена, доступны предложения DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP, которые указывают автоматическую инициализацию и обновление, но не назначены ни одному столбцу TIMESTAMP, если явно не включены в определение столбца.
2) Альтернативно, if explicit_defaults_for_timestamp отключен (по умолчанию), выполните одно из следующих действий:
2a) Определите столбец с предложением DEFAULT, которое задает постоянное значение по умолчанию.
2b) Укажите значение NULL атрибут. Это также приводит к тому, что столбец допускает значения NULL, что означает, что вы не можете назначить текущую временную метку, установив столбец в NULL. Назначение NULL устанавливает столбец в NULL.
blockquote>