气流-SQL Server连接

时间:2019-02-15 02:49:30

标签: airflow

我有一个问题需要将后端连接从SQLite更改为SQL Server。在为sql_alchemy_conn输入正确的连接字符串后,我运行以下命令:airflow initdb。我收到以下错误:

  

sqlalchemy.exc.ProgrammingError:(pyodbc.ProgrammingError)('42000',“ [42000] [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]一个表只能有一个时间戳列。因为表' task_reschedule'已经有一个,不能添加列'start_date'。(2738)(SQLExecDirectW)“)[SQL:'\ n创建表task_reschedule(\ n \ tid INTEGER NOT NULL 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_date TIMESTAMP 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_fkey FOREIGN KEY(task_id,dag_id,execute_date)REFERENCES task_instance(task_instance) )\ n \ n'](此错误的背景位于:http://sqlalche.me/e/f405

1 个答案:

答案 0 :(得分:1)

所以这对我有用: 在文件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数据库。