OSError: [Errno 18] ligação cruzada inválida

Estou a trabalhar com o django 1.6.5 e o python 2.7. Tenho um recurso de importação no meu aplicativo e recebo um erro:

OSError: [Errno 18] Invalid cross-device link

tenho problemas com esta parte do Código:

os.rename(db_temp, settings.DATABASES['bookmat']['NAME'])

Código na configuração:

'bookmat': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': '/my_projects/book/db/bookmat.sqlite3',
},
Author: mark, 2017-02-22

2 answers

os.rename só funciona se o código e o destino estiverem no mesmo sistema de ficheiros. Em vez disso, deve utilizar shutil.move.

 28
Author: butesa, 2017-05-14 18:51:33

Acho que mudar o nome só funciona quando os nomes de origem e de destino estão no mesmo sistema de ficheiros. Deves ter montes diferentes. Caso contrário, terá esse erro. Você pode implementar o mesmo efeito com uma cópia e uma delete.

Espero que ajude.
 2
Author: Tiago Almeida, 2017-02-22 19:00:31