Воздушный поток - соединение с SQL Server - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть вопрос по изменению внутреннего соединения с SQLite на SQL Server.После ввода правильной строки соединения для sql_alchemy_conn я запускаю эту команду: airflow initdb.Я получаю следующую ошибку:

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('42000', "[42000] [Microsoft] [Драйвер ODBC 13 для SQL Server] [SQL Server]Таблица может иметь только один столбец отметки времени. Поскольку таблица 'task_reschedule' уже имеет один столбец, столбец 'start_date' не может быть добавлен. (2738) (SQLExecDirectW) ") [SQL: '\ nCREATE TABLE task_reschedule (\ n \ tid INTEGER NOTNULL IDENTITY (1,1), \ n \ ttask_id VARCHAR (250) NOT NULL, \ n \ tdag_id VARCHAR (250) NOT NULL, \ n \ texecution_date TIMESTAMP NOT NULL, \ n \ ttry_number INTEGER NOT NULL, \ n \ tstart_dateTIMESTAMP NOT NULL, \ n \ tend_date TIMESTAMP NOT NULL, \ n \ tduration INTEGER NOT NULL, \ n \ treschedule_date TIMESTAMP NOT NULL, \ n \ tPRIMARY KEY (id), \ n \ tCONSTRAINT task_reschedule_dag_task_date_fid_Firect_Date_Firect_Direct_Fate_Firect_Tirect) ССЫЛКИ task_instance (task_id, dag_id, execute_date) \ n) \ n \ n '] (фон этой ошибки: http://sqlalche.me/e/f405)

1 Ответ

0 голосов
/ 16 февраля 2019

Так что это работает для меня: В файле: 0a2a5b66e19d_add_task_reschedule_table.py добавьте это:

def mysql_datetime():
    return mysql.DATETIME(timezone=True)

и замените все строки, которые имеют timestamp(), такие как ниже:

sa.Column('execution_date', timestamp(), nullable=False, server_default=None),

с этим:

sa.Column('execution_date', mysql_datetime(), nullable=False, server_default=None),

Как только я внес это изменение, вышеуказанная ошибка исчезает, но я не уверен, есть ли какие-либо другие непреднамеренные последствия.Если это так, я буду обновлять здесь или просто использовать базу данных MySQL.

...