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

Bash脚本使用变量创建MySQL/MariaDB数据库报错如何解决

问题修复方案

核心错误原因

  • Bash 单引号包裹的内容不会解析变量,你写在scl enable rh-mariadb '...'内的$db不会被替换为实际的数据库名称,原样传入MySQL后直接触发语法错误。
  • 变量即使成功展开,set @dbname=$db没有给字符串值加引号,MySQL会把mytest识别为列名而非字符串值,这就是Unknown column 'mytest' in 'field list'报错的直接原因。
  • setup_db.sql存在拼写错误:DEALLOCATE PREAPRE stmt应为DEALLOCATE PREPARE stmt。

修正后代码

setup.sh

#!/bin/bash

db="mytest"

# 外层改用双引号保证变量解析,内层给$db加引号标记为字符串值
scl enable rh-mariadb "mysql -u user -p -e 'set @dbname=\"$db\"; \. setup_db.sql'"

setup_db.sql

SET @query = CONCAT('CREATE DATABASE `', @dbname, '`');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:21:03