Конвертировать MySQL tinyint типы в бит - PullRequest
0 голосов
/ 22 сентября 2010

Я использовал MySQL Migration Toolkit для переноса базы данных SQL Server 2008 в MySQL. Однако он преобразовал все мои bit типы в tinyint. Моей модели данных это не нравится, потому что у меня есть куча выражений, проверяющих true / false, а не 0-255.

Есть ли способ сообщить Toolkit для преобразования этих различных или какой-нибудь SQL, который я могу запустить для преобразования в новой базе данных?

1 Ответ

1 голос
/ 22 сентября 2010

В MySQL до 5.0.5 Бит действительно не существовал, поэтому Migration Toolkit, вероятно, еще не обновился, но вместо этого вы можете использовать TINYINT (1) согласно этой цитате с сайта mysql:

"Начиная с MySQL 5.0.3, тип данных BIT доступен для хранения значений битовых полей. (До 5.0.3 MySQL интерпретировал BIT как TINYINT (1).) В MySQL 5.0.3 BIT поддерживается только для MyISAM. MySQL 5.0.5 расширяет поддержку BIT для MEMORY, InnoDB, BDB и NDBCLUSTER. "

Для преобразования вы можете использовать ALTER TABLE:

ALTER TABLE MODIFY TINYINT (1);

Или, если вы хотите использовать новый тип BIT, вы можете добавить его и туда, но, поскольку он несколько нов, я думаю, что у нас по-прежнему будут некоторые проблемы с типом BIT для, ну, немного,

На самом деле нет хорошего способа сделать это для всех столбцов, хотя я обычно использую sed или perl -pi, чтобы внести изменения в мой файл .sql перед импортом.

Надеюсьэто помогает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...