我通常知道如何在 syncdb 上执行自定义 SQL。我正在使用已迁移的 Django 1.7,但由于某些特殊字段,我的应用程序尚未准备好,因此 Django 回退到 syncdb。至少现在它正在使用 sqlparse 以便将文件的内容正确地拆分为单个语句。
但是,安装了 sqlparse 后,Django 会立即发送整个文件,我得到
Failed to install custom SQL for myApp.myModel model: (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 //\n\nDROP PROCEDURE IF EXISTS myProcedure //\n\nCREA' at line 1")
当我卸载 sqlparse 时,Django 不遵守 DELIMITER 语句,因此产生了根本没有意义的代码块。
我试过在任何带分号的行后面加上“--评论”的技巧不起作用,评论被删除了。
最佳答案
如 here 的评论中所述,
The delimiter is used only by mysql client (not on API, driver ... etc).
So, it won't work.
我在使用 south 使用 db.execute(sql_file) 时遇到了类似的问题(对于我的 django 迁移)我的 sql_file 所在的位置
DROP PROCEDURE IF EXIATS ....
DELIMITER //
CREATE PROCEDURE ....
BEGIN
....
END
...
我删除了 DROP 和 DELIMITER 位,并添加了 ' label ' 到程序创建,它对我有用:
CREATE PROCEDURE xxxx
label: BEGIN
....
;
END label
关于python - 使用 Django syncdb 安装存储过程或函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282821/