我有一个 Dockerfile,它将目录中的所有文件复制到 /docker-entrypoint-initdb.d
目录中。除以下文件外,所有文件都完美初始化:
CREATE OR REPLACE PROCEDURE filterRentalStationByString (
IN str VARCHAR(255),
IN cnt INT
)
BEGIN
SELECT
r.id,
r.rental_station_name,
r.language_id,
r.address,
a.street,
a.city,
a.house_number,
a.zip_code
FROM
rental_stations r
INNER JOIN addresses a ON r.address = a.id
WHERE
MATCH( zip_code, city, street, house_number ) AGAINST ( str )
OR
LOWER( CONCAT( rental_station_name, street, city, house_number, zip_code ) ) LIKE LOWER( CONCAT( '%', str, '%' ) )
LIMIT
cnt;
END
当我从 Intellij 运行代码时,一切正常,但是当我尝试使用 docker-compose 启动和设置数据库时,我收到此错误消息:
db-mariadb-1 | 2022-10-22 08:13:02+00:00 [注意] [入口点]:/usr/local/bin/docker-entrypoint.sh: running/docker-entrypoint-initdb.d/03_stored_procedure.sql
db-mariadb-1 |第 1 行的错误 1064 (42000):您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 13 行的 '' 附近使用的正确语法
最佳答案
解决了这个问题,我在create语句前加了一个DELIMITER。
关于sql - 为什么即使手动运行代码 MariaDB 也会引发语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74162051/