Workbench 8.0, LOAD DATA LOCAL INFILE, error 1148

  • Författare
  • Meddelande
Online

theEmelie

sql-kodare

  • Inlägg: 52
  • Blev medlem: 02 sep 2018, 20:06

Workbench 8.0, LOAD DATA LOCAL INFILE, error 1148

Inlägg08 feb 2019, 23:12

Jag håller på att jobba med guiden i SQL https://dbwebb.se/guide/kom-igang-med-sql-i-mysql/importera-fran-excel-till-tabell, och får felmeddelandet
“ERROR 1148 (42000): The used command is not allowed with this MySQL version”

Jag har gjort allt som guiden säger till mig att göra.
Jag har local_infile = 1; i workbench, det går att köra genom cygwin, men inte genom workbench, jag får fortfarande samma felmeddelande. Och jag har satt att local_infile är ON.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10827
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: local_infile

Inlägg09 feb 2019, 00:42

Jag har prövat med terminalklienten, inte genom workbench. Det är så det står i guiden.

Workbench bör dock ha en motsvarande koppling. Detta är en sak som behöver ställas in både i klienten och på serversidan.

Dock så prövade jag min installation av Workbench och det fungerade utan att jag behövde göra någon extra inställning. Men jag kan heller inte minnas om jag gjort en sådan inställning tidigare, det var många år sedan jag installerade den...

Det kan också vara så att Workbench använde min konfigfil .my.cnf. Jag är inte hundra.

Det kan också vara relaterat till inställningen:
Kod: Markera allt
SHOW VARIABLES LIKE "secure_file_priv"


På Linux/Debian är den null men den brukar vara satt på Mac/Windows och det kan eventuellt störa.
Kod: Markera allt
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| secure_file_priv | NULL  |
+------------------+-------+
1 row in set (0.00 sec)


När man kör på Workbench är det viktigt att öppna applikationen från rätt katalog så att working directory är samma där filerna ligger, alternativt behöver man ange hela sökvägen till filerna.

Annars får man felet som ser ut så här.
Error Code: 2. File 'kurs.csv' not found (Errcode: 2 "No such file or directory")


Av den anledningen kan det vara enklare att köra LOAD DATA INFILE direkt i terminalen.

Om vi skall leta vidare så tänker jag även kika i denna buggen:
https://bugs.mysql.com/bug.php?id=91891

Så, på rak arm har jag inget svar, men visa din version på Workbench och berätta vilket OS du kör på samt visa ditt värde på secure_file_priv så kan vi klura ut det med lite tester.
...
..:
.... /mos
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10827
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: local_infile

Inlägg09 feb 2019, 10:20

Om det är ett problem så finns en lösning i länken till buggen ovan, sök efter:
[10 Nov 2018 1:25] Catherine S
...
..:
.... /mos
Användarvisningsbild

Hamidovic

php-programmerare

  • Inlägg: 45
  • Blev medlem: 07 aug 2018, 08:44
  • Ort: Karlshamn/Jönköping

Re: local_infile

Inlägg10 feb 2019, 23:08

jag gjorde först såhär:

Jag gick in i sql.filerna som root.

därefter:

SHOW VARIABLES LIKE "secure_file_priv";

slutligen la jag mina filer i den pathen.

LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\kurs.csv'
INTO TABLE kurs
CHARSET utf8
FIELDS
TERMINATED BY ','
ENCLOSED BY '"'
LINES
TERMINATED BY '\n'
IGNORE 1 LINES
;

Testa:

SELECT * FROM kurs;
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10827
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Workbench och LOAD DATA LOCAL INFILE

Inlägg12 feb 2019, 10:09

För att sammanfatta, felet vi pratar om är detta, i Workbench 8.0:
ERROR 1148 (42000): The used command is not allowed with this MySQL version


Som Hamidovic säger så är hans lösning en "workaround" för att göra LOAD DATA INFILE, då LOAD DATA LOCAL INFILE tydligen inte fungerar på Workbench version 8.0. Tidigare versioner av klienten fungerar dock.

LOAD DATA INFILE (ej LOCAL) sker på server-sidan där, den server där MySQL-servern kör.

LOAD DATA LOCAL INFILE sker på den maskin där klienten körs och informationen skickas till databasservern.

I vårt fall är det oftast samma maskin, så workarounden är att göra LOAD DATA INFILE utan LOCAL, om man vill köra i Workbench. I terminalklienten fungerar det som tänkt, där finns inte samma problem.

Det finns ett par buggrapporter rörande detta:
https://bugs.mysql.com/bug.php?id=91891 inklusive workaround Mac/Windows av [10 Nov 2018 1:25] Catherine S
https://bugs.mysql.com/bug.php?id=72220

Enklast är att köra terminalklienten för att göra LOAD DATA INFILE:.
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Google [Bot] och 8 gäster