文章目录 实验环境和组件介绍 具体的配置过程 ollama部署使用 测试Mysql数据库表的构建 DBHUB的搭建 Cherry Studio接入模型和MCP工具 遇到的问题 1Panel商店ollama镜像版本过低 Cherry Studio连接Ollama服务检测模型无法使用 ollama检测异常解决 实验环境和组件介绍 实验平台 Ubuntu 24 GPU:RTX 3090 Memory:32GB 关键组件1panel ollama mysql,DBhub one-api Cherry Studio 推荐模型 qwen3-8b/qwen3-14b/qwen3-32b,从ollama拉取这些模型的量化guff文件,单卡3090均能支持。 具体的配置过程 ollama部署使用 由于使用docker部署ollama需要提前安装NVIDIA Container Toolkit,官方参考指南,推荐阅读Ubuntu 24.04 安装 NVIDIA Container Toolkit 全指南:让Docker拥抱GPU。 sudo apt-get update&& sudo apt-get install -y --no-install-recommendscurl gnupg2curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey| sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg\ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list| \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listsudo apt-get updatesudo apt-get install -y nvidia-container-toolkit# 生成配置文件 sudo nvidia-ctk runtime configure --runtime= docker# 重启Docker服务 sudo systemctl restartdocker 然后正常在1panel引用商店中,部署ollama,注意勾选GPU选项。然后,正常拉取模型到本地。这里建议选择一个好的网络。 ollama run qwen3:8b测试Mysql数据库表的构建 Mysql数据库的部署,借助1panel面板,使用docker快速搭建。 手动在1panel数据库管理面板创建test数据库。 然后使用Mysql客户端工具,这里笔者使用hexhub这款开源软件进行连接,然后执行sql脚本。 --1 . 准备工作:如果存在旧表则删除,保证脚本可重复运行 DROP TABLE IF EXISTS order_items; DROP TABLE IF EXISTS orders; DROP TABLE IF EXISTS products; DROP TABLE IF EXISTSusers ; --2 . 建表语句( DDL) -- 用户表 CREATE TABLEusers ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR( 50 ) NOT NULL, email VARCHAR( 100 ) , balance DECIMAL( 10 ,2 ) DEFAULT0.00 , created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ; -- 商品表 CREATE TABLE products( id INT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR( 100 ) NOT NULL, category VARCHAR( 50 ) , price DECIMAL( 10 ,2 ) NOT NULL, stock INT DEFAULT0 ) ; -- 订单表 CREATE TABLE orders( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, order_date DATETIME NOT NULL, total_amount DECIMAL( 10 ,2 ) NOT NULL, status TINYINT DEFAULT0 COMMENT'0:Pending, 1:Paid, 2:Shipped, 3:Completed' , FOREIGN KEY( user_id) REFERENCES users( id) ) ; -- 订单详情表 CREATE TABLE order_items( id INT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL( 10 ,2 ) NOT NULL, FOREIGN KEY( order_id) REFERENCES orders( id) , FOREIGN KEY( product_id) REFERENCES products( id) ) ; --1 . 清理旧数据( 保证脚本可重复运行) DROP TABLE IF EXISTS order_items; DROP TABLE IF EXISTS orders; DROP TABLE IF EXISTS products; DROP TABLE IF EXISTSusers ; --2 . 建表语句( DDL) CREATE TABLEusers ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR( 50 ) NOT NULL, email VARCHAR( 100 ) , balance DECIMAL( 10 ,2 ) DEFAULT0.00 , created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ; CREATE TABLE products( id INT PRIMARY KEY AUTO_INCREMENT, product_name VARCHAR( 100 ) NOT NULL, category VARCHAR( 50 ) , price DECIMAL( 10 ,2 ) NOT NULL, stock INT DEFAULT0 ) ; CREATE TABLE orders( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, order_date DATETIME NOT NULL, total_amount DECIMAL( 10 ,2 ) NOT NULL, status TINYINT DEFAULT0 COMMENT'0:Pending, 1:Paid, 2:Shipped, 3:Completed' , FOREIGN KEY( user_id) REFERENCES users( id) ) ; CREATE TABLE order_items( id INT PRIMARY KEY AUTO_INCREMENT, order_id INT NOT NULL, product_id INT NOT NULL, quantity INT NOT NULL, price DECIMAL( 10 ,2 ) NOT NULL, FOREIGN KEY( order_id) REFERENCES orders( id) , FOREIGN KEY( product_id) REFERENCES products( id) ) ; --3 . 修正后的数据填充存储过程 DELIMITER$$ CREATE PROCEDURE generate_mock_data( ) BEGIN --== = 变量声明区( 必须在最前面) == = DECLARE i INT DEFAULT1 ; DECLARE item_j INT; -- 【修复】这里声明了内层循环变量 item_j DECLARE num_users INT DEFAULT500 ; DECLARE num_products INT DEFAULT100 ; DECLARE num_orders INT DEFAULT1000 ; DECLARE random_user_id INT; DECLARE random_product_id INT; DECLARE random_qty INT; DECLARE random_price DECIMAL( 10,2 ) ; DECLARE random_status INT; DECLARE days_back INT; -- --- A. 填充用户表 --- WHILE i<= num_users DO INSERT INTOusers ( username, email, balance) VALUES( CONCAT( 'user_' , i) , CONCAT( 'user_' , i,'@example.com' ) , ROUND( RAND( ) *5000 ,2 ) ) ; SET i= i +1 ; END WHILE; -- --- B. 填充商品表 --- SET i= 1 ; WHILE i<= num_products DO INSERT INTO products( product_name, category, price, stock) VALUES( CONCAT( 'Product ' , i,' - ' , ELT( FLOOR( 1 + RAND( ) *5 ) ,'Electronics' ,'Clothing' ,'Home' ,'Books' ,'Sports' )) , ELT( FLOOR( 1 + RAND( ) *5 ) ,'Electronics' ,'Clothing' ,'Home' ,'Books' ,'Sports' ) , ROUND( RAND( ) *200 +10 ,2 ) , FLOOR( RAND( ) *100 ) ) ; SET i= i +1 ; END WHILE; -- --- C. 填充订单表及详情 --- SET i= 1 ; WHILE i<= num_orders DO SET random_user_id= FLOOR( 1 + RAND( ) * num_users) ; SET random_status= FLOOR( RAND( ) *4 ) ; SET days_back= FLOOR( RAND( ) *365 ) ; INSERT INTO orders( user_id, order_date, total_amount, status) VALUES( random_user_id, DATE_SUB( NOW( ) , INTERVAL days_back DAY) ,0.00 , random_status) ; SET @current_order_id= LAST_INSERT_ID( ) ; -- --- D. 填充订单详情( 内层循环) --- -- 初始化内层计数器 SET item_j= 1 ; -- 随机生成1 到3 个商品项 WHILE item_j<= FLOOR( 1 + RAND( ) *3 ) DO SET random_product_id= FLOOR( 1 + RAND( ) * num_products) ; SET random_qty= FLOOR( 1 + RAND( ) *5 ) ; SELECT price INTO random_price FROM products WHEREid = random_product_id; INSERT INTO order_items( order_id, product_id, quantity, price) VALUES( @current_order_id, random_product_id, random_qty, random_price) ; UPDATE orders SET total_amount= total_amount +( random_qty * random_price) WHEREid = @current_order_id; SET item_j= item_j +1 ; END WHILE; SET i= i +1 ; END WHILE; END$$ DELIMITER; --4 . 执行存储过程 CALL generate_mock_data( ) ; --5 . 验证结果 SELECT'Users' AS Table_Name, COUNT( *) AS Row_Count FROMusers UNION ALL SELECT'Products' , COUNT( *) FROM products UNION ALL SELECT'Orders' , COUNT( *) FROM orders UNION ALL SELECT'Order_Items' , COUNT( *) FROM order_items; DBHUB的搭建 在应用商店,按照要求正常配置启动即可。 Cherry Studio接入模型和MCP工具 在cherry Studio中配置MCP服务(这里笔者使用8081端口启动),然后就可以在对话中勾选使用该MCP服务。注意不要使用deepseek-r1系列,因为该模型系列对MCP工具调用并不友好,推荐使用qwen3系列。 连接ollama时,这里笔者遇到ollama无法正常访问,所以使用one api进行兼容解决。 正常调用和对话 遇到的问题 1Panel商店ollama镜像版本过低 存在的问题:1Panel商店中最高支持0.13.5,但是已经很陈旧了。在拉取较新模型提示版本太低。 解决方法:手动修改docker-sompose文件,调整镜像版本为0.14.1。笔者尝试latest版本仍然出错。 Cherry Studio连接Ollama服务检测模型无法使用 存在的问题:Cherry Studio配置本地ollama服务连接,可以检测到存在的模型,但是无法正常使用模型。起初,笔者怀疑是ollama对openai格式调用的不兼容,但是查询资料,ollama已经兼容openai的调,经过,终端请求验证,确实可以正常调用。 curl http://localhost:11434/v1/chat/completions -H"Content-Type: application/json" -d'{ "model": "deepseek-r1:32b", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello!" } ] }' 解决方法:使用One-api对ollama的访问做一层代理,顺利解决问题。
ollama检测异常解决 其实也就是上个问题,不过在最后笔者再次尝试的时候,突然又正常了。注意连接检测使用单个,不并发即可通过。 可能是ollama本身对并发支持不好,然后cherry studio默认的检测方式会发生错误。