【问题标题】:django - Unable to set delimiter in raw sql (MySQL)django - 无法在原始 sql (MySQL) 中设置分隔符
【发布时间】:2022-03-19 02:03:55
【问题描述】:

我想通过迁移来定义一个存储过程。在此之前我试图设置分隔符但得到django.db.utils.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$' at line 1")

代码:

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('...', '...'),
    ]

    operations = [
        migrations.RunSQL("DELIMITER $$"),
        # ...
        migrations.RunSQL("DELIMITER ;"),
    ]

我发现information 关于DELIMITER 是一个客户端关键字,特定工具可能不支持,但django 中的正确方法是什么?

【问题讨论】:

  • DELIMITER 是 not SQL 语句类型。这是客户端命令。阅读 Django 手册并搜索如何重新定义默认语句分隔符。
  • @Akina 它取决于底层的 mysql 连接器,而不是 django,因为连接器是 mysql 客户端。
  • 我会简单地将带有整个主体和结束端的 create procedure 语句传递给 runsql。
  • @Shadow,谢谢,它奏效了。但是为什么示例包含分隔符重新定义?
  • 因为不是所有的客户都可以在没有它的情况下工作。

标签: mysql django migration


【解决方案1】:

不需要设置分隔符。我刚刚删除了这些行,它起作用了。 (见帖子 cmets)

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2020-07-26
    • 2016-10-26
    • 1970-01-01
    • 2012-06-03
    • 2010-10-13
    相关资源
    最近更新 更多