OSError: [Errno 18] Invalid cross-device link

2020-06-06 08:15发布

问题:

I'm working with django 1.6.5 and python 2.7. I have import feature in my app and I get error:

OSError: [Errno 18] Invalid cross-device link

I have problem with this part of code:

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

code in settings:

'bookmat': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': '/my_projects/book/db/bookmat.sqlite3',
},

回答1:

os.rename only works if source and destination are on the same file system. You should use shutil.move instead.



回答2:

I think rename only works when the source and target names are on the same file system. You probably have different mounts. Otherwise you get that error. You can implement the same effect with a copy and a delete.

Hope it helps