First one is probably because on your local computer you run Django as CGI, or some other "new request - different process" way. So if you registering Page model in every request, it's works because you have single request. But on web server your app is loaded as FCGI or some other way like this, so only first request can be served well (when second request is send, your app tries to register Page model again).
Second one is probably because you have relative path to db file. So if you type
./manage syncdb
in your project dir '/my/project/dir'. Django searches for file in '/my/projec/dir/mydb.sqlite'.
But if you run it in web server, you have different path '/some/http/server/path', so your program is confused.