You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Strapi连接MySQL执行原生SQL遇表名含连字符语法问题求助

解决方案

1. 确认表名的反引号用法(MySQL支持带连字符的表名)

MySQL允许表名包含连字符,只要用**反引号(`)**完整包裹表名即可。在JavaScript模板字符串中,由于模板本身用反引号包裹,内部的反引号需要用反斜杠转义,你的写法本身是正确的,可参考标准格式:

return strapi.connections.default.raw(`
  DELETE FROM nurses;
  DELETE FROM \`users-permissions_user\`;
`);

2. 开启MySQL多语句执行支持

如果执行仍报错,大概率是MySQL驱动默认禁用了多语句执行(防SQL注入风险),需要在Strapi的测试环境数据库配置中开启该选项:

找到项目config/env/test/database.js文件,修改MySQL连接配置,添加multipleStatements: true:

module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'bookshelf',
      settings: {
        client: 'mysql',
        host: env('DATABASE_HOST', 'localhost'),
        port: env.int('DATABASE_PORT', 3306),
        database: env('DATABASE_NAME', 'strapi_test'),
        username: env('DATABASE_USERNAME', 'root'),
        password: env('DATABASE_PASSWORD', ''),
        options: {
          multipleStatements: true
        }
      },
      options: {}
    }
  }
});

注意事项

  • 仅在测试环境开启multipleStatements,生产环境务必禁用,避免SQL注入风险
  • 若单条SQL执行正常、多条报错,可直接定位为多语句支持未开启的问题

内容的提问来源于stack exchange,提问作者thevikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 01:15:39