2012-10-15 17 views
19

Ben Ubuntu 12.04 ve çalıştırıyorum Tamam işte MySQL 5.5 sorundur:MySQL LOAD DATA LOCAL INFILE Python

Python SQL komutu için MySQLDB modülünü kullanarak:

cursor.execute("LOAD DATA LOCAL INFILE 'example.csv' INTO TABLE 'example_mysql_table' TERMINATED BY ',';") 

Farketmez iş. ERROR 1148: The used command is not allowed with this MySQL version

Şimdi bir süreliğine bir çözüm için etrafa baktım ve şu ana kadar aynı problemi olan başka insanlar "my.cnf" ye "local-infile = 1" ekleyerek bunu düzeltmiş görünüyorlar. [mysqld] ve [mysql] altında. Bu benim için işe yaramadı ve neden emin değilim.

İlgili Bağlantı:

MySQL: Enable LOAD DATA LOCAL INFILE

+0

Eğer değiştirdikten sonra dinlenme MySQL mı (herhangi bir yerde herhangi belgelerinde bu bulamadım) my.cnf? Doğrudan MySQL konsolu ile çalıştırdığınızda ne olur? –

+1

Değiştirdikten sonra MySQL'i yeniden başlattım ve hiçbir şey değiştirmedi. Komut, MySQL konsolunda doğrudan çalıştırırken çalışır, bu yüzden MySQLdb – user1746082

cevap

3

gördüğüm gibi, hiçbir dosya seçeneği local-infile yoktur. Ancak bu değeri dinamik olarak bir komut dosyasında değiştirebilirsiniz.

:

SET @@global.local_infile = 1; 

MySQL komut satırı konsolunda test edilmiştir, her şeydir Tamam -

SELECT @@global.local_infile; 

değişken kullanacağım bu açıklamayı ayarlamak için -

bu seçenek için zamanında bu sorguyu görüntülemek için
SET @@GLOBAL.local_infile = 1; 
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE table1; 
Query OK, 3 rows affected (0.06 sec) 

SET @@GLOBAL.local_infile = 0; 
LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE table1; 
ERROR 1148 (42000): The used command is not allowed with this MySQL version 
+0

ile ilgili bir sorun olduğunu farzediyorum, bu sorguları MySQL konsolunda çalıştırdım ve çalıştılar, ancak python koduma bir satır ekledim. local_infile değişkeni 1, ala: cursor.execute ("SELECT @@ global.local_infile = 1;") hiçbir şey değişmedi, hala 1148 hatası var. – user1746082

+0

Hata var mıydı? Ya da belki birileri, ya da bir şey tekrar bu bayrak sıfırlamak? Her neyse, eğer konsolda çalışıyorsa, her yerde çalışmalı. – Devart

+1

Dur ... SELECT'i çalıştırmamalısınız. SET ifadesini kullan! – Devart

61

Harcama sonrası yapılandırma dosyalarındaki ayarların her türlü çalışıyor ve saatler MySQL onlarca yeniden başlatmadan üzerinde saat Sorunu çözmek için görünüyor bu geldi

MySQLdb.connect(server, username, password, database, local_infile = 1) 
+2

Teşekkürler !!! Aynı problemim vardı! Bu çözüm işe yarıyor. – Scoutman

+1

Çok güzel, bunu bulmak biraz zaman aldı, benim için çalışıyor. –

+1

harika çözüm, saf dahi! ve bu iş parçacığı üzerinde biraz geç gelen 'my.conf' – sadmicrowave