gpt4 book ai didi

mysql - Laravel迁移原始sql错误

转载 作者:行者123 更新时间:2023-11-29 23:19:49 24 4
gpt4 key购买 nike

我想在 Laravel 中使用 Levenshtein 距离进行搜索。我找到了 SQL 函数(保存为 app/database/migrations/levenshtain.sql):

    DELIMITER //    CREATE FUNCTION `LEVENSHTEIN`(s1 VARCHAR(255) CHARACTER SET utf8, s2 VARCHAR(255) CHARACTER SET utf8) RETURNS int(11)        DETERMINISTIC    BEGIN        DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;        DECLARE s1_char CHAR CHARACTER SET utf8;        -- max strlen=255 for this function        DECLARE cv0, cv1 VARBINARY(256);        SET s1_len = CHAR_LENGTH(s1),            s2_len = CHAR_LENGTH(s2),            cv1 = 0x00,            j = 1,            i = 1,            c = 0;        IF (s1 = s2) THEN          RETURN (0);        ELSEIF (s1_len = 0) THEN          RETURN (s2_len);        ELSEIF (s2_len = 0) THEN          RETURN (s1_len);        END IF;        WHILE (j  c_temp) THEN              SET c = c_temp;            END IF;            SET c_temp = ORD(SUBSTRING(cv1, j+1, 1)) + 1;            IF (c > c_temp) THEN              SET c = c_temp;            END IF;            SET cv0 = CONCAT(cv0, CHAR(c)),                j = j + 1;          END WHILE;          SET cv1 = cv0,              i = i + 1;        END WHILE;        RETURN (c);      END//    DELIMITER ;

在迁移中:

    public function up () {        DB::statement(file_get_contents(__DIR__.'/levenshtein.sql'));    }    public function down () {        DB::statement('DROP FUNCTION `LEVENSHTEIN`;');    }

我尝试了 DB::statementDB::unpreparedDB::raw,但 Laravel 迁移抛出错误:

    [Illuminate\Database\QueryException]      SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in yo      ur SQL syntax; check the manual that corresponds to your MySQL server version f      or the right syntax to use near 'DELIMITER //      CREATE FUNCTION `LEVENSHTEIN`(s1 VARCHAR(255) CHARACTER SET utf8, ' at line 1

我用HeidiSQL执行就可以了,请问是什么问题?

最佳答案

我在 Creating MYSQL Procedure in Laravel 4 Migrations 找到了解决方案由@peterm 回答。

DELIMITER// 中存在问题,这不是有效的 sql 语句。这只是一个 MySql 客户端命令。

关于mysql - Laravel迁移原始sql错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27419493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com