gpt4 book ai didi

mysql - 重命名 SQL 中的数据库表错误

转载 作者:行者123 更新时间:2023-11-30 00:52:36 24 4
gpt4 key购买 nike

我正在尝试使用此处给出的答案重命名我的数据库表:

How To have Dynamic SQL in MySQL Stored Procedure

但是当我尝试在 phpMyAdmin SQL 选项卡中运行以下命令时,出现 SQL 错误:

delimiter // 
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
SET @s = CONCAT('SELECT 'RENAME TABLE ',
GROUP_CONCAT('', TABLE_SCHEMA, ''.'', TABLE_NAME,
' TO ', TABLE_SCHEMA, ''='.osx_''', TABLE_NAME, '')) AS q
FROM
information_schema.Tables WHERE TABLE_SCHEMA='my_database'';;'
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
//
delimiter ;

错误如下:

#1064 - You have an error in your SQL syntax;  
check the manual that corresponds to your MySQL
server version for the right syntax to use near
'RENAME TABLE ', GROUP_CONCAT('', TABLE_SCHEMA, ''.'', TABLE_NAME,' at line 3

我没有看到错误,有人能发现它吗?

--编辑--

查看 Max 的答案后,我使用反引号重新格式化了查询:

CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
SET @s = SELECT
CONCAT('RENAME TABLE ',
GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME,
'` TO `', TABLE_SCHEMA, '`.`osx_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA=`my_database`;
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

从我发现的另一个示例(见下文)中,我仍然收到 sql 错误:

#1064 - You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right
syntax to use near 'SELECT
CONCAT('RENAME TABLE ',
GROUP_CONCAT('`', TABLE_SCHEMA, '`.`',' at line 3

我还尝试了另一个例子:

SELECT 
CONCAT('RENAME TABLE ',
GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME,
'` TO `', TABLE_SCHEMA, '`.`osx_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA='my_database';

这会执行但会产生以下警告:

This table does not contain a unique column. 
Grid edit, checkbox, Edit, Copy and Delete features are not available.

并且不会对数据库执行任何操作。

救命!

最佳答案

'SELECT 'RENAME

您已使用单引号打开 CONCAT() 参数,当 MySQL 看到另一个参数时,它需要下一个参数。
您可以转义引号或对字符串文字使用双引号。

CONCAT('SELECT "RENAME TABLE ", GROUP_CONCAT( ...

关于mysql - 重命名 SQL 中的数据库表错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831344/

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