Использование журнала изменений liquibase для создания таблицы с полем даты и времени, почему это поле стало текстовым

Я создал таблицу, используя базу данных LiquibaseChangeLog:

      <changeSet id="1" author="person1">
        <createTable tableName="schedule">
         <column name="id" type="varchar(20)">
                <constraints primaryKey="true" nullable="false"/>
         </column>
         <column name="worktime" type="datetime">
         </column>
  </createTable>
  </changeSet>

Однако при проверке моей базы данных sqlite схема таблицы стала ниже:

sqlite> .schema schedule
CREATE TABLE schedule (
id TEXT NOT NULL, 
worktime TEXT, 
CONSTRAINT PK_SCHEDULE 
PRIMARY KEY (id));

Вы видите, что и varchar, и datatime были изменены на текстовый тип. Что я должен добавить в определение таблицы changeSet, чтобы она работала правильно. Кстати, я использую liquibase-1.9.3.jar. Теперь мне нужно исправить их прямо из sqlite DB. Спасибо.


person user1342336    schedule 05.07.2012    source источник


Ответы (1)


SQLite не имеет типа данных datetime. Он поддерживает только числа, текст и блоб:

Цитата из http://www.sqlite.org/datatype3.html

В SQLite нет класса хранения, выделенного для хранения дат и/или времени

person a_horse_with_no_name    schedule 05.07.2012
comment
Но когда я открываю свою базу данных sqlite и создаю таблицу с типом данных datetime, varchar, она создается без проблем. - person user1342336; 05.07.2012
comment
@user1342336 user1342336: что такое тип datetime, varchar? - person a_horse_with_no_name; 06.07.2012
comment
См. ниже схему таблицы в sqlite: sqlite› .schema test CREATE TABLE test(id integer not null, type varchar(10), shiptime datetime, Primary key(id)); sqlite› не совсем понимаю, почему всего 3 типа данных? Пожалуйста, дайте более подробную информацию. Спасибо. - person user1342336; 06.07.2012
comment
@ user1342336: ну, это то, что разработчики SQLite решили реализовать. Это более или менее объяснено в ссылке, которую я разместил - person a_horse_with_no_name; 06.07.2012