代码之家  ›  专栏  ›  技术社区  ›  Javiar Sandra

气流-MSSQL连接

  •  0
  • Javiar Sandra  · 技术社区  · 5 年前

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

    sqlalchemy.exc.ProgrammingError程序错误: (pyodbc.ProgrammingError程序错误)('42000',“[42000][Microsoft][ODBC Driver 13 for SQL Server][SQL Server]一个表只能有一个时间戳列。由于表“task_reschedule”已经有一个表,因此无法添加列“start_date”。(2738)(SQLExecDirectW)“)[SQL:'\n创建表task\u reschedule(\n\tid INTEGER NOT NULL IDENTITY(1,1),\n\ttask\u id VARCHAR(250)NOT NULL,n\tdag\u id VARCHAR(250)NOT NULL,n\t执行日期时间戳NOT NULL,n\ttry\u number INTEGER NOT NULL,n\t开始日期时间戳NOT NULL,n\t结束日期时间戳NOT NULL,n\t持续时间整数NOT NULL,\n\treschedule_date TIMESTAMP不为空,n\t主密钥(id),\n\t约束任务重新计划任务日期外键(任务id,dag_id,执行日期)引用任务实例(任务id,dag_id,执行日期)\n\n'](此错误的背景信息位于: http://sqlalche.me/e/f405 )

    0 回复  |  直到 5 年前
        1
  •  1
  •   Javiar Sandra    5 年前

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