2013-07-17 32 views
2

當嘗試使用這樣的事情從一個遷移腳本加載CSV在軌道遷移腳本加載CSV:麻煩與

ActiveRecord::Base.connection.execute(
    "load data local infile 'my_data.csv' into table my_table fields terminated by ',' lines terminated by '\n' (column1, column2) 

我得到:

Mysql2::Error: The used command is not allowed with this MySQL version: load data local infile.... 

我已經添加相應的設置,my.cnf文件:

[mysqld] 
local-infile=1 
[mysql] 
local-infile=1 

如果我跑我的 「LOAD DATA LOCAL INFILE」 從mysql客戶端命令(例如,MySQL的-un ame -p)它的效果很好。出於某種原因,在遷移腳本中(來自rails),它會因「不允許使用此MySQL版本」而失敗。

+0

你它不是完整的(複製/粘貼)上面的SQL命令?您是否嘗試過「LOAD DATA INFILE'/tmp/test.txt'INTO TABLE測試FIELDS TERMINATED BY','LINES STARTING BY'xxx'」(http://dev.mysql.com/doc/refman/5.1/en /load-data.html)? – Roger

+0

謝謝,但我知道該語句在mysql命令行中有效。沒有遷移,我能夠克服這一點。 –

+0

但我們不知道(知道)。 – Roger

回答

0

我使用activerecord-fast-import(這是基於相同類型的導入查詢),當有這個問題,並且發現了,爲security reasons的服務器和客戶端需要有這兩種啓用。

服務器確實需要(my.cnf)上的設置。爲了能夠在客戶端上,只需添加這database.yml

local_infile: true