2009-08-13 11 views
3

データベース設定用の作成スクリプトでいくつかの変数を使用しようとしています。私はそれらをどのように使うべきか正確にはわかりません。私のコードを適切にフォーマットする方法を説明してください。以下は、私がしようとしたコードであり、誤差は私が取得:作成ステートメントの変数

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='[email protected]; [email protected]; Server=****; Port=3306; Database =****; Table=****;' ; 

のdidnをしようとすると、 `

せずにそれを試してみましたまだ正しくフォーマットされていないと言われています

答えて

0

もう一度試してみてください。

表示される可能性のある問題は2つあります。

  1. あなたは正しい引用符の代わりに、あなたのSQLで 一般的な単一引用符を持っています。

  2. これらの変数を使用するSQL を実行する前に、変数 を定義して実行する必要があります。

あなたが保存された機能でそれを置くことを試みることができるのMySQL 5+を使用して、機能を実行している場合http://www.connectionstrings.com/mysql

+0

私はhttp://dev.mysql.com/doc/refman/5.0/en/federated-use.htmlから接続文字列を持って、私はそこでの変数を持っていないときには正常に動作します。あなたが私のためにすべてを一緒に置くことができれば、それは素晴らしいだろう –

+0

私はそれがうまくいくのか分からない。文字列でコマンド全体をラップして、EXECコールを使用する必要はありませんか? –

+0

もちろん、そのコメントはSqlServer世界の誰かからのものです。おそらくそれはMySQLでは異なっているでしょう。 –

0

を参照してください?

0

これはできません。 mysqlは変数のDDL文を解析しません。

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='[email protected]'; Pwd='[email protected]+'; Server=****; Port=3306; Database =****'; 
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; 
関連する問題