|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
MySQL in locale
Salve,
ho installato MySQL 5.1 in locale come servizio di Windows XP. Sto avendo problemi nell'accedere ad alcuni file tramite la funzione sql "load data". Questa istruzione sql dovrebbe semplicemente leggere dei dati opportunamente formattati da un file testuale e copiarli in una tabella di un database. Ma aldilà del funzionamento, succede che se il file è indicato con un path assoluto sotto C: funziona correttamente. Se uso un'unità di rete W: creata in modo che punti alla stessa directory che contiene il file da cercare, il file non viene trovato (errore di file not found). Nel reference manual (http://dev.mysql.com/doc/refman/5.1/en/load-data.html) spiega che l'istruzione "load data" viene eseguita sul processo server e quindi i path sono da riferirsi ad esso. Nel caso si voglia accedere a file che non sono sul server ma bensì sul client si deve aggiungere l'opzione "local". Ed infatti così funziona! Ma io mi chiedo: perchè? Ho installato il server in locale e quindi dovrebbe vedere le stesse cose che vede il client (cioè la console) visto che sono sulla stessa macchina? Perchè il client (usando l'opzione local) vede l'unità di rete W: e il processo server no? |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
Aggiungo qualche esempio per chiarezza.
Il file che devo aprire diciamo che è C:\mysql_test\myfile.txt Ho creato un'unità di rete W: che punta a C:\mysql_test. Quindi posso accedere al file anche con W:\myfile.txt. Ecco i comandi provati: - LOAD DATA INFILE 'C:\\mysql_test\\myfile.txt' INTO TABLE mytable --> OK - LOAD DATA INFILE 'W:\\myfile.txt' INTO TABLE mytable --> File not found - LOAD DATA LOCAL INFILE 'W:\\myfile.txt' INTO TABLE mytable --> OK Quindi specificando il path fisico (C:...) il server mysql trova il file. Specificando il path al file attraverso l'unità di rete il server non trova il file. Usando l'opzione "local", forzo il client ad accedere localmente al file e passarlo al server solo dopo averlo aperto, e ovviamente questo funziona. Eppure, visto che il server è locale, perchè non riesce a vedere i percorsi attraverso l'unità di rete W:? |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2002
Città: Napoli
Messaggi: 1727
|
probabilmetne mysql gira con un'utenza di sistema che non vede w:
quando dai l'opzione LOCAL stai usando la tua utenza windows che vede w:
__________________
Se buttassimo in un cestino tutto ciò che in Italia non funziona cosa rimarrebbe? Il cestino. |
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Jun 2006
Messaggi: 117
|
Quote:
Anche con postgres in effetti avevo lo stesso identico problema, ma postgres viene installato di default con i diritti di un utente di sistema limitato. Tuttavia in quel caso (la versione 8.2 lo permette) ho modificato l'utente trasformandolo in amministratore e in aggiunta ho ricreato l'unità di rete (sempre w: ) anche per quell'utente. Risultato: sempre errore di file non trovato! MySQL però non mi pare che sia installato con un'utenza di sistema particolare. In fase di installazione non richiede nulla di tutto ciò (postgres lo fa esplicitamente). Controllando fra i servizi di windows infatti mysql risulta installato come servizio di sistema locale, mentre postgres è un servizio appartenente ad un utente speciale creato appositamente. Dunque a mio avviso mysql dovrebbe tranquillamente vedere anche l'unità di rete W: |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:32.