MariaDB node.js scénář hází ER_LOCAL_INFILE_WRONG_FILENAME chyba při pokusu o načtení dat do tabulka z místní soubor XML

0

Otázka

Mám node.js skript, který je připojení k místní MariaDB server, vytvářet nějaké tabulky, a potom pokusu o načtení některých dat do nich provedením SQL dotazu jako je tento:

LOAD XML LOCAL INFILE 'C:\\path\\to\\some_data.xml'
INTO TABLE some_data
ROWS IDENTIFIED BY '<data>';

Skript se nezdaří s chybou, jako je:

SqlError: (conn=60, no: 45034, SQLState: 45034) LOCAL INFILE wrong filename. 'C:\path\to\some_data.xml' doesn't correspond to query LOAD XML LOCAL INFILE 'C:\\path\\to\\some_data.xml'
INTO TABLE some_data
ROWS IDENTIFIED BY '<data>';. Query cancelled. Check for malicious server / proxy

Na node.js kód skriptu je jako:

const pathToXmlFile = path.resolve(__dirname, '../some_data.xml')
   .replace(/\\/g, '\\\\');
   // .replace(/\\/g, '/'); 
// none of the above work, and neither does no escaping at all
query = `LOAD XML LOCAL INFILE '${pathToXmlFile}'
         INTO TABLE some_data
         ROWS IDENTIFIED BY '<data>';`;

Snažil jsem se uniknout cestu s lomítka (jsem spuštění skriptu přes Git Bash), chyba zůstává stejná, pouze způsob, cesta, zobrazí se změny. Mám nastavit permitLocalInfile: 'true' na MariaDB klient připojení a local_infile=1 na obou [mysqld] a [client] sekce my.ini. Na node.js připojení má uživatel na FILE právo.

Uzel verze je 16.13.0, MariaDB npm modul verze je 2.5.5, všechny běží na stejném počítači s Windows 10 (MariaDB server na localhost).

Výše uvedený dotaz funguje naprosto v pořádku, když je spuštěn z HeidiSQL.

Nějaké nápady, co dělám špatně?

mariadb mysql node.js
2021-11-23 17:02:18
2

Nejlepší odpověď

1

Jsem vytvořit mariadb chyba, že : https://jira.mariadb.org/browse/CONJS-181

Jako řešení, můžete použít "/" místo "\": pomocí "C:/path/to/some_data.xml" nebude unikl vyhnout této chybě

2021-11-24 08:07:07

Díky!!! Jak jsem psal v popisu, jsem se snažil uniknout cestu všemi možnými způsoby, včetně lomítka (unix-styl), jak jste navrhl. To nefunguje, buď jak buď
AsGoodAsItGets

Při bližším šetření, chyba (pokud existuje) se zdá být s npm modul pro mariadb, ne mariadb sám. Takže byste měli asi zavřít. github.com/mariadb-corporation/mariadb-connector-nodejs/blob/...
AsGoodAsItGets

A to je zvláštní metoda, která je testování platnosti. Dívám se na to, dělat nějaké testy. github.com/mariadb-corporation/mariadb-connector-nodejs/blob/...
AsGoodAsItGets

Mám předložila nové vydání s node.js konektor, prosím, zavřete nad: github.com/mariadb-corporation/mariadb-connector-nodejs/issues/...
AsGoodAsItGets
0

Zdá se, že je chyba s mariadb uzel konektor, otevřel jsem problém zde:

https://github.com/mariadb-corporation/mariadb-connector-nodejs/issues/183

Mezitím jsem se snažil mysql2 a mysql konektory, první nevypadá na podporu permitLocalInfile: 'true' možnost připojení, tak jsem se přepnout na standardní mysql konektor a vše funguje v pohodě (s několika změnami v kódu, protože malé rozdíly v metodě volání).

Pokud je chyba v mariadb konektor je pevná, budu aktualizovat odpověď.

2021-11-24 11:36:42

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................