Страница 1 из 1

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

Добавлено: Пт 24 апр 2009 17:06
CoL
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 спрашивается ?
подправте плиз

Добавлено: Сб 25 апр 2009 10:00
CoL
некоторые дополнения

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


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

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

Добавлено: Ср 29 апр 2009 13:41
CoL
эта проблема была именно на dbForge v3.5

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

Добавлено: Ср 29 апр 2009 14:35
AlexZ
Было бы неплохо, если бы Вы выложили DDL, на которых воспроизводится данная ситуация.

Добавлено: Чт 30 апр 2009 11:40
CoL
#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 таблиц

Добавлено: Вт 05 май 2009 08:13
AlexZ
Не могли бы Вы написать какую версию сервера MySQL вы используете?

Добавлено: Вт 05 май 2009 15:54
CoL
mysqld Ver 5.0.45-community-nt for Win32 on ia32

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

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

Добавлено: Ср 06 май 2009 18:49
CoL
ok
буду ждать нового билда