当前位置: 首页 > 面试题库 >

在MySQL上呈现时,VARCHAR需要一个长度

吴德辉
2023-03-14
问题内容

我有一个带有pas.plugins.sqlalchemy的扩展实例。它出现在安装列表中,但是在安装时会导致错误。

这是ZCML定义:

<configure xmlns="http://namespaces.zope.org/zope" xmlns:db="http://namespaces.zope.org/db">
<include package="z3c.saconfig" file="meta.zcml" />
<db:engine xmlns="http://namespaces.zope.org/db" name="pas" url="mysql://webadmin:password@rcs-mysql-dev/estep" />
<db:session xmlns="http://namespaces.zope.org/db" name="pas.plugins.sqlalchemy" engine="pas" />
</configure>

追溯为:

Traceback (innermost last):
  Module ZPublisher.Publish, line 127, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 47, in call_object
  Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 575, in installProducts
  Module Products.CMFQuickInstallerTool.QuickInstallerTool, line 512, in installProduct
   - __traceback_info__: ('pas.plugins.sqlalchemy',)
  Module Products.GenericSetup.tool, line 330, in runAllImportStepsFromProfile
   - __traceback_info__: profile-pas.plugins.sqlalchemy:install
  Module Products.GenericSetup.tool, line 1085, in _runImportStepsFromContext
  Module Products.GenericSetup.tool, line 999, in _doRunImportStep
   - __traceback_info__: pas.plugins.sqlalchemy.install
  Module pas.plugins.sqlalchemy.setuphandlers, line 46, in install
  Module sqlalchemy.schema, line 2148, in create_all
  Module sqlalchemy.engine.base, line 1698, in create
  Module sqlalchemy.engine.base, line 1740, in _run_visitor
  Module sqlalchemy.sql.visitors, line 83, in traverse_single
  Module sqlalchemy.engine.ddl, line 42, in visit_metadata
  Module sqlalchemy.sql.visitors, line 83, in traverse_single
  Module sqlalchemy.engine.ddl, line 58, in visit_table
  Module sqlalchemy.engine.base, line 1191, in execute
  Module sqlalchemy.engine.base, line 1241, in _execute_ddl
  Module sqlalchemy.sql.expression, line 1413, in compile
  Module sqlalchemy.engine.base, line 702, in compile
  Module sqlalchemy.engine.base, line 715, in process
  Module sqlalchemy.sql.visitors, line 54, in _compiler_dispatch
  Module sqlalchemy.sql.compiler, line 1152, in visit_create_table
  Module sqlalchemy.dialects.mysql.base, line 1282, in get_column_specification
  Module sqlalchemy.engine.base, line 761, in process
  Module sqlalchemy.sql.visitors, line 54, in _compiler_dispatch
  Module sqlalchemy.sql.compiler, line 1450, in visit_string
  Module sqlalchemy.dialects.mysql.base, line 1520, in visit_VARCHAR
InvalidRequestError: VARCHAR requires a length when rendered on MySQL

问题答案:

我没有安装MySQL,并且pas.plugins.sqlalchemy对我来说在postgresql上运行良好,但是作者似乎对varchars作了假设。假设这不是SQLAlchemy应该自己处理的事情(如果SQLalchemy的MySQL方言可以为无限制的varchars选择合适的最大大小,那将是非常不错的选择),我将看看我是否可以在今天晚上进行修复。

快速浏览一下代码显示,所有“字符串”(数据库将其视为varchar)字段的最大长度除外,除了 User* 表中的 Login名称
密码 以及 Group 表中的 名称之外 ,没有充分的理由说明为什么不同的。
__ ***

更新
:从Subversion中检出https://svn.plone.org/svn/collective/PASPlugins/pas.plugins.sqlalchemy/branches/auspex。这是我的pas.plugins.sqlalchemy版本,支持IGroupCapability接口(允许将用户添加到也存储在rdb中的组中或从中删除),并且还为所有无限制的String字段添加了长度。

如果您不知道如何在构建中使用Subversion检出,请参见:http
:
//pypi.python.org/pypi/mr.developer/



 类似资料:
  • 问题内容: 我有一个MySQL表,其中动态插入行。因为我无法确定字符串的长度并且不希望它们被截断,所以我将它们设置为varchar(200),它通常比我需要的大得多。给varchar字段提供比所需长度更长的长度是否会对性能产生重大影响? 问题答案: 不,在某种意义上说,如果您存储在该列中的值始终(例如)少于50个字符,则将该列声明为或具有相同的性能。

  • 问题内容: 我有一张这样的桌子: 和这样的一个: 和这样的SQL语句 如果我解释给我这个: 对于一百万行,这非常慢。我尝试使用以下方法在products.name上添加索引: 这给出了: 我认为Sub_part列显示已在索引中(以字节为单位)的前缀,如本页中所述。 当我重新解释查询时,我得到: 看起来好像没有使用新索引。如 本页所述,如果索引是前缀索引,则不会用于排序。实际上,如果我用以下方法截断

  • 我有以下PHP代码在Laravel正在执行一个MySql查询: 执行此查询需要很长时间。 我对所排序的列以及其他查询的许多列都有索引。 我该怎么办? 更新: 执行的查询: 结果:

  • 问题内容: 在MySQL中,如果我在UTF-8表中创建一个新字段,是否意味着我可以在该字段中存储32个字节的数据或32个字符(多字节)? 问题答案: 这个答案出现在我的Google搜索结果的顶部,但不正确,所以: 混乱可能是由于测试了不同版本的mysql。 版本4计数字节 版本5包含字符 http://dev.mysql.com/doc/refman/5.0/zh-CN/string-type-

  • 我把我的主页通过谷歌的PageSpeed测试,它给了我69分移动和95分桌面。唯一的问题是呈现阻塞CSS。 现在,我的网站上所有的网页都在折叠上面。也就是说,任何地方都不涉及卷轴。考虑到这一点,我个人觉得我不应该做任何特别的事情,因为CSS从一开始就需要以我设计的方式查看我的页面。 如果我执行异步加载或其他操作,它最终将在预期输出之前的黑白未组织页面上显示内容。 我忽略谷歌了吗?这将意味着我永远不

  • 我有一个Java ExecutorService(固定线程池1),我将可运行的任务传递给它以供将来执行。每个任务通常在10秒内完成。Executor服务只是简单地完成任务。如果我关闭应用程序,我会运行以下程序:; 问题是它似乎需要一段时间才能关闭,有时可能需要几分钟,有时它似乎永远不会关闭,有时它会在几秒钟内关闭!在执行器队列中的任何时候都可能有大约2000个任务,但我只是希望它完成当前正在执行的