【问题标题】:GAE, sqlite3.OperationalError: unable to open database fileGAE,sqlite3.OperationalError:无法打开数据库文件
【发布时间】:2014-09-21 23:41:02
【问题描述】:

好吧,我读了很多。有很多人有同样的问题,但所有的答案都对我没有帮助。

我正在尝试这样做 - http://googlecloudplatform.github.io/appengine-php-wordpress-starter-project/,但每次运行应用程序时,我都会收到相同的消息:

> 2014-09-22 10:12:10 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program Files (x86)\\Google\\google_appengine\\dev_appserver.py', '--skip_sdk_update_check=yes', '--port=8080', '--admin_port=8090', 'C:\\gae\\wp39']"
INFO     2014-09-22 10:12:12,089 devappserver2.py:725] Skipping SDK update check.
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py", line 82, in <module>
    _run_file(__file__, globals())
  File "C:\Program Files (x86)\Google\google_appengine\dev_appserver.py", line 78, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 970, in <module>
    main()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 963, in main
    dev_server.start(options)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 768, in start
    request_data, storage_path, options, configuration)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 867, in _create_api_server
    default_gcs_bucket_name=options.default_gcs_bucket_name)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\api_server.py", line 364, in setup_stubs
    auto_id_policy=datastore_auto_id_policy)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\datastore\datastore_sqlite_stub.py", line 604, in __init__
    factory=sql_conn)
sqlite3.OperationalError: unable to open database file
2014-09-22 10:12:12 (Process exited with code 1)

Windows 8、Python27、GAE 1.9.11

  1. 我检查了所有权限并以管理员身份启动了 GAE。
  2. 我尝试了兼容模式(XP&Me、Win7) - 没有。
  3. 我尝试在 app.yaml 中设置 TMP 变量
  4. 我试图在所有 C: 驱动器上找到“datastore.db” - 什么也没找到。
  5. 我尝试从 CMD(以管理员身份)启动 App,如下所示:
    • C:\gae\wp39>dev_appserver.py C:\gae\wp39
    • C:\gae\wp39>dev_appserver.py --datastore_path C:\temp\data.db C:\gae\wp39
    • C:\gae\wp39>dev_appserver.py --clear_datastore=yes --datastore_path C:\temp\data.db C:\gae\wp39

同样的结果。

当我尝试使用属性“--datastore_path C:\temp\data.db' 从控制台运行应用程序时,系统会创建该文件(大约 9KB),但仍然无法打开数据库。

文件夹“C:\Users\\AppData\Local\Temp\appengine.levalult”存在,但为空。我不知道还能做什么。

谢谢。如有任何建议,我将不胜感激。

【问题讨论】:

  • 您是否尝试过更新您的 GAE SDK?

标签: python google-app-engine sqlite


【解决方案1】:

解决:

将用户名更改为无 Unicode 或

tmptemp 环境变量值更改为e:\

在 cmd 提示符下,执行:

  1. 更改env var

    设置温度=e:\

    设置 tmp=e:\

    2:运行 gae

    D:\Program Files (x86)\Google\google_appengine\launcher\GoogleAppEngineLauncher.exe

原因:

datastore_sqllite_stub.py

def __init__

self.__connection = sqlite3.connect:之前

添加以下代码:

    f = open( 'e:/tmp/a.log', 'w' )

    f.write( self.__datastore_file )

    f.write( '\n' )

    for name in os.environ.keys():

        f.write( '\n' )

        v = os.environ[name]  

        f.write( name ) 

        f.write( '   ' ) 

        f.write( v )

    f.close() 

self.__datastore_file = 'e:/tmp/datastore.db'

根据代码,数据库文件位于:

c:\users\%username%\appdata\local\temp\appengine.xgogo\datastore.db

等于:

%TEMP%\ appengine.xgogo\datastore.db

%Temp% 是环境变量。

当用户名有Unicode字符时,make失败。

【讨论】:

    猜你喜欢
    • 2011-12-01
    • 2011-06-05
    • 2021-10-19
    • 1970-01-01
    • 2012-10-04
    • 2011-11-10
    • 2013-05-02
    • 1970-01-01
    相关资源
    最近更新 更多