БАГА с NULL для поля с типом TIMESTAMP
БАГА с NULL для поля с типом TIMESTAMP
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 спрашивается ?
подправте плиз
вот что в базе
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 спрашивается ?
подправте плиз
некоторые дополнения
бага с NULL также замечена в:
- в окне сравнения(diff) в компарере
- при просмотре DDL(закладка Текст)
- генерации DDL таблиц
как оказалось:
в результирующем коде компарере эта бага "плавающая",
в том смысле что NULL в не которых вариантах сравнения NULL всетаки есть, а в некоторых нет.
бага с NULL также замечена в:
- в окне сравнения(diff) в компарере
- при просмотре DDL(закладка Текст)
- генерации DDL таблиц
как оказалось:
в результирующем коде компарере эта бага "плавающая",
в том смысле что NULL в не которых вариантах сравнения NULL всетаки есть, а в некоторых нет.
Да, Вы правы, в описанном случае действительно была ошибка, но на версии 3.10. Мы исправили данную проблему в dbForge Studio for MySQL v3.50. Попробуйте воспроизвести её на новом билде.
Что касается генерации DDL мы не пишем NULL, потому что это значение по умолчанию и при выполнении данного скрипта колонка будет nullable. Но в случае с TimeStamp, MySQL по умолчанию ставит NOT NULL, поэтому эту проблему мы тоже исправим и для TimeStamp'а мы будем прописывать NULL.
Что касается генерации DDL мы не пишем NULL, потому что это значение по умолчанию и при выполнении данного скрипта колонка будет nullable. Но в случае с TimeStamp, MySQL по умолчанию ставит NOT NULL, поэтому эту проблему мы тоже исправим и для TimeStamp'а мы будем прописывать NULL.
#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 таблиц
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 таблиц
Да, к сожалению, нам не удается воспроизвести указанную Вами проблему. Похожая ситуация могла бы возникнуть на сервере MySQL 4.1.x из-за ошибки в самом MySQL. Но все равно, как мы уже говорили, мы внесли некоторые исправления в генерацию DDL для TimeStamp колонок.
В ближайшие дни на сайте будет выложен новый билд dbForge Studio for MySQL v3.50. Попробуйте проверить воспроизведется ли указанная проблема на этом билде.
В ближайшие дни на сайте будет выложен новый билд dbForge Studio for MySQL v3.50. Попробуйте проверить воспроизведется ли указанная проблема на этом билде.