我正在尝试在创建脚本中使用一些变量来进行数据库设置。我不确定如何使用它们。请解释如何正确格式化我的代码。下面是我尝试的代码,以及我得到的错误:
SET @username = 'xxxx'; -- store number goes here
SET @password = 'xxxxxx'; -- store password goes here
CREATE TABLE IF NOT EXISTS `my_table` (
`id` int(11) auto_increment,
`release_date` datetime,
`front_image_file` varchar(255),
PRIMARY KEY (`id`)
) ENGINE=FEDERATED
DEFAULT CHARSET=latin1
AUTO_INCREMENT=1
CONNECTION='mysql://`@username`:`@password`@host_name:3306/database_name/table_tame' ;
错误
#1432 - Can't create federated table. The data source connection string 'mysql://`@username`:`@password`@host_name:3306/databa' is not in the correct format
我也尝试过没有`
尝试EdmundG的解决方案
SET @username = 'xxxx'; -- store number goes here
SET @password = 'xxxxxx'; -- store password goes here
CREATE TABLE IF NOT EXISTS `my_table` (
`id` int(11) auto_increment,
`release_date` datetime,
`front_image_file` varchar(255),
PRIMARY KEY (`id`)
) ENGINE=FEDERATED
DEFAULT CHARSET=latin1
AUTO_INCREMENT=1
CONNECTION='Uid=@username; Pwd=@password; Server=****; Port=3306; Database =****; Table=****;' ;
无效,仍然说格式不正确
答案 0 :(得分:5)
MySQL不支持将变量插值直接转换为这样的语法。
但是,您可以使用这些变量构建一个字符串,然后以dynamic SQL的形式准备并执行它。
SET @username = 'xxxx'; -- store number goes here
SET @password = 'xxxxxx'; -- store password goes here
SET @sql = CONCAT('CREATE TABLE IF NOT EXISTS `my_table` (',
' `id` int(11) auto_increment,',
' `release_date` datetime,',
' `front_image_file` varchar(255),',
' PRIMARY KEY (`id`)',
') ENGINE=FEDERATED',
' DEFAULT CHARSET=latin1',
' AUTO_INCREMENT=1',
' CONNECTION=''mysql://', @username, ':', @password,
'@host_name:3306/database_name/table_tame');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE stmt;
答案 1 :(得分:0)
好的第三次尝试。
我可以看到两个可能的问题。
你有正确的引号而不是 SQL中的通用单引号。
您需要定义变量 并在运行SQL之前执行 那些使用这些变量。
答案 2 :(得分:0)
如果您使用的是MySQL 5+,您可以尝试将其放入存储的函数中,然后运行该函数吗?
答案 3 :(得分:0)
答案 4 :(得分:0)
试试这个
SET @username ='xxxx'; - 商店号码在这里
SET @password ='xxxxxx'; - 商店密码在这里
CREATE TABLE IF NOT EXISTS my_table (
id int(11) AUTO_INCREMENT,
release_date datetime,
front_image_file varchar(255),
PRIMARY KEY (id))
ENGINE=FEDERATED
DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 CONNECTION='Uid='+@username'; Pwd='+@password+'; Server=****; Port=3306; Database =****';