0

python manage.py dbshel​​l / loaddata を使用して SQL Server データベースに接続できません。

ここからFreeTDS、unixODBC、pyodbc(3.0.7)、およびdjango-pyodbcを使用してUbuntuにセットアップしました: https ://github.com/lionheart/django-pyodbc/

syncdb と South の移行を正常に実行できます。ただし、dbshel​​l または loaddata を実行しようとすると、次のエラーが発生します。

[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect

isql と tsql を使用して、コマンド ラインから接続できます。私が見逃しているものについてのアイデアはありますか?

4

1 に答える 1

0

それで、私は問題を理解しました。

dbshel​​l または loaddata を使用する場合は、ホストだけでなく名前付き DSN を使用する必要があります。これを /etc/freetds.conf、/etc/odbcinst.ini、および /etc/odbc.ini で正しくセットアップしたので、tsql と isql は機能していました。

私はsettings.pyでこのデフォルトのデータベースを使用していました:

    'ENGINE': 'django_pyodbc',
    'NAME': 'db_name',
    'USER': 'user_name',
    'PASSWORD': 'pw',
    'HOST': 'hostname.domain.com,1433',
    'PORT': '1433',
    'OPTIONS': {
        'host_is_server': True,
        'autocommit': True,
        'unicode_results': True,
        'extra_params': 'tds_version=7.2'
    },

次のように変更する必要がありました。

    'ENGINE': 'django_pyodbc',
    'NAME': 'db_name',
    'USER': 'user_name',
    'PASSWORD': 'pw',
    'PORT': '1433',
    'OPTIONS': {
        'host_is_server': True,
        'dsn': 'dsn_name',
        'autocommit': True,
        'unicode_results': True,
        'extra_params': 'tds_version=7.2'
    },

最初の (壊れた) 例では 'HOST' を使用しているのに対し、2 番目の (実際の) 例では 'OPTIONS' の下で 'dsn' を使用しています。

于 2014-06-24T19:16:23.430 に答える