CRMint Deployment Issue - IndexError: tuple index out of range

CRMint Deployment Issue - IndexError: tuple index out of range

在仔细遵循 quick start guide 之后,在 CRMint 的部署阶段发生了一个 SQL 相关的错误。我以前有 2 个 SQL 相关的错误,但我能够修复第一个错误(也许它们是相关的)。第一个是:

(_mysql_exceptions.OperationalError) (1045, "Access denied for user 'crmintapp'@'cloudsqlproxy~34.76.202.116' (using password: YES)")
The second one is a SQL index range error
File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/instrumentation.py", line 152, in _all_sqla_attributes
    inherits = supercls.__mro__[1]
IndexError: tuple index out of range

我通过直接在 GCP 控制台和我的脚本 (crmint/cli/stages/atf-sbx-mousset2.py) 中更改我的 SQL 实例中用户 crmintapp 的密码修复了我的第一个错误。

我仍然遇到第二个错误,我无法弄清楚问题出在哪里。显然有一个 turple 超出范围,但我很难理解这个问题。有人知道吗?

---> Start CloudSQL proxy (3/4)  
---> Start CloudSQL proxy (4/4)  
---> Configure Cloud SQL proxy settings  
---> Applying database migrations  
---> Sowing DB seeds  
Sowing DB seeds: Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/__main__.py", line 15, in <module>


Error log:

---> Configure Cloud SQL proxy settings  
---> Applying database migrations  
---> Sowing DB seeds  
Sowing DB seeds: Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/__main__.py", line 15, in <module>
    main(as_module=True)
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/cli.py", line 513, in main
    cli.main(args=args, prog_name=name)
  File "/tmp/atf-sbx-mousset2/backends/lib/flask/cli.py", line 380, in main
    return AppGroup.main(self, *args, **kwargs)
  File "/tmp/atf-sbx-mousset2/backends/lib/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmp/atf-sbx-mousset2/backends/lib/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/tmp/atf-sbx-mousset2/backends/lib/click/core.py", line 1066, in invoke
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 197, in __init__
    self._set_entities(entities)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 225, in _set_entities
    self._set_entity_selectables(self._entities)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 256, in _set_entity_selectables
    ent.setup_entity(*d[entity])
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/query.py", line 4324, in setup_entity
    self._with_polymorphic = ext_info.with_polymorphic_mappers
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/util/langhelpers.py", line 884, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 2155, in _with_polymorphic_mappers
    configure_mappers()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 3299, in configure_mappers
    mapper._post_configure_properties()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 1965, in _post_configure_properties
    prop.init()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/interfaces.py", line 197, in init
    self.do_init()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/relationships.py", line 2076, in do_init
    self._process_dependent_arguments()
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/relationships.py", line 2105, in _process_dependent_arguments
    setattr(self, attr, attr_value())
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/ext/declarative/clsregistry.py", line 326, in __call__
    x = eval(self.arg, globals(), self._dict)
  File "<string>", line 1, in <module>
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/ext/declarative/clsregistry.py", line 219, in __getattr__
    if key not in mp.all_orm_descriptors:
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/util/langhelpers.py", line 884, in __get__
    obj.__dict__[self.__name__] = result = self.fget(obj)
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/mapper.py", line 2453, in all_orm_descriptors
    dict(self.class_manager._all_sqla_attributes())
  File "/tmp/atf-sbx-mousset2/backends/lib/sqlalchemy/orm/instrumentation.py", line 152, in _all_sqla_attributes
    inherits = supercls.__mro__[1]
IndexError: tuple index out of range

有一个 open issue link 与您的问题相似。解决方法是使用 dev 分支进行部署。我尝试在我这边部署,目前它也对我有用。请务必删除计算机上的 master 分支并使用 dev CLI。

dev branch 在 Google 云平台上部署 CRMint:

# Double check if a Cloud Project is selected.
[ "$GOOGLE_CLOUD_PROJECT" == "" ] && echo -n 'Input a Cloud Project ID: ' && read project_id && gcloud config set project "$project_id"

# Install the command-line.
bash <(curl -Ls https://raw.githubusercontent.com/google/crmint/master/scripts/install.sh) dev

# Create a stage definition for your environment.
crmint stages create

# Re-run the setup in case new elements are needed.
crmint cloud setup

# Deploy the updated App Engine services.
crmint cloud deploy