БАГА с NULL для поля с типом TIMESTAMP

Обсуждение возникших проблем, предложений и ошибок dbForge для MySQL
Закрыто
CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

БАГА с NULL для поля с типом TIMESTAMP

Сообщение CoL » Пт 24 апр 2009 17:06

dbForge не понимает NULL в определении поля TIMESTAMP
вот что в базе
date_update timestamp NULL default '0000-00-00 00:00:00'

а вот что dbForge показывает
date_update timestamp default '0000-00-00 00:00:00'

из-за этого я так понимаю и косяк в "Сравнение схем..."

на Мастер так
date_update TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00'
на Таргет так
date_update TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'

а результирующий скрипт для синхронизации
date_update TIMESTAMP DEFAULT '0000-00-00 00:00:00'

хде NULL спрашивается ?
подправте плиз

CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Сообщение CoL » Сб 25 апр 2009 10:00

некоторые дополнения

бага с NULL также замечена в:
- в окне сравнения(diff) в компарере
- при просмотре DDL(закладка Текст)
- генерации DDL таблиц


как оказалось:
в результирующем коде компарере эта бага "плавающая",
в том смысле что NULL в не которых вариантах сравнения NULL всетаки есть, а в некоторых нет.

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Пн 27 апр 2009 09:14

Да, Вы правы, в описанном случае действительно была ошибка, но на версии 3.10. Мы исправили данную проблему в dbForge Studio for MySQL v3.50. Попробуйте воспроизвести её на новом билде.
Что касается генерации DDL мы не пишем NULL, потому что это значение по умолчанию и при выполнении данного скрипта колонка будет nullable. Но в случае с TimeStamp, MySQL по умолчанию ставит NOT NULL, поэтому эту проблему мы тоже исправим и для TimeStamp'а мы будем прописывать NULL.

CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Сообщение CoL » Ср 29 апр 2009 13:41

эта проблема была именно на dbForge v3.5

обратите внимание еще на, то что эта бага плавающая.
если не отловите её, я могу выложить два DDL
при сравнении которых в результирующем коде NULL есть и нет

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Ср 29 апр 2009 14:35

Было бы неплохо, если бы Вы выложили DDL, на которых воспроизводится данная ситуация.

CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Сообщение CoL » Чт 30 апр 2009 11:40

#Master
CREATE TABLE table1 (
date1 TIMESTAMP DEFAULT '0000-00-00 00:00:00',
date2 TIMESTAMP DEFAULT '0000-00-00 00:00:00'
)
#Target
CREATE TABLE table1 (
date2 TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
date1 TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'
)

#Result
ALTER TABLE table1
CHANGE COLUMN date1 date1 TIMESTAMP DEFAULT '0000-00-00 00:00:00' FIRST,
CHANGE COLUMN date2 date2 TIMESTAMP DEFAULT '0000-00-00 00:00:00' AFTER date1;

################################

#Master
CREATE TABLE table2 (
date1 TIMESTAMP DEFAULT '0000-00-00 00:00:00',
date2 TIMESTAMP DEFAULT '0000-00-00 00:00:00'
)
#Target
CREATE TABLE table2 (
date1 TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
date2 TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'
)

#Result
ALTER TABLE table2
CHANGE COLUMN date1 date1 TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
CHANGE COLUMN date2 date2 TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00';



PS
проверил в v3.50

бага с NULL также замечена в:
- в окне сравнения(diff) в компарере
- при просмотре DDL(закладка Текст)
- генерации DDL таблиц

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Вт 05 май 2009 08:13

Не могли бы Вы написать какую версию сервера MySQL вы используете?

CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Сообщение CoL » Вт 05 май 2009 15:54

mysqld Ver 5.0.45-community-nt for Win32 on ia32

PS
а что вам не удалось с эмитировать ошибку ?

AlexZ
Devart Team
Сообщения: 146
Зарегистрирован: Пн 20 окт 2008 14:59
Контактная информация:

Сообщение AlexZ » Ср 06 май 2009 10:09

Да, к сожалению, нам не удается воспроизвести указанную Вами проблему. Похожая ситуация могла бы возникнуть на сервере MySQL 4.1.x из-за ошибки в самом MySQL. Но все равно, как мы уже говорили, мы внесли некоторые исправления в генерацию DDL для TimeStamp колонок.
В ближайшие дни на сайте будет выложен новый билд dbForge Studio for MySQL v3.50. Попробуйте проверить воспроизведется ли указанная проблема на этом билде.

CoL
Сообщения: 26
Зарегистрирован: Пт 24 апр 2009 15:45

Сообщение CoL » Ср 06 май 2009 18:49

ok
буду ждать нового билда

Закрыто