问题标签 [search-path]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 我们是否能够在 R 中生成已加载包的列表?
是否有一个函数可以在 R 中生成所需包的列表?类似于“pip freeze”的东西,所以我们可以快速复制环境?
sql - 关于 search_path,默认值表达式函数何时/如何绑定?
出于测试目的,我提供了我自己的now()
函数实现,即public.now()
. 使用我自己的版本search_path
覆盖默认值pg_catalog.now()
主要是可行的,但我有一个表,其中表的默认表达式为now()
. 显示该表会产生类似于以下内容的内容:
但是,在模式保存和恢复(到测试数据库)之后,相同的显示表会产生
我由此假设,最初默认表达式中的函数未绑定到任何模式,search_path 将用于查找正确的模式。但是,转储或恢复操作似乎将该功能“绑定”到当前功能。
我对函数的“绑定状态”的理解是否正确?有没有办法在转储/恢复边界上保持函数的无限性?
delphi - Delphi - 定位编译器无法在其默认路径中搜索的单元的路径
我已经下载了一个包含许多包的组件,然后我安装了所有设计时包并生成了所有其他 dcu 文件。每次创建新应用程序时,我都必须在 Delphi 搜索路径中分配其路径。有没有办法将其路径分配给 Delphi 编译器搜索路径一次,所有应用程序都可以访问这些单元,这样我就不需要每次都手动设置新应用程序的路径。
postgresql - 强制 PostgreSQL 在函数中使用不同的模式
我想为 PG SQL 数据库中的模式创建一个更新函数。测试功能如下。它不起作用,因为它永远不应该发出通知,但会在运行时发出通知test_schema_update('second')
。
问题是 PG SQL 似乎SELECT
每个会话只分析一次语句,然后将表固定到特定模式。有趣的是你会得到Schema was: second
.
那么有没有办法重置SELECT
语句分析或其他方法来解决这个问题?
旁注:所有模式创建功能(ALTER TABLE
,CREATE TABLE
...)都可以正常工作。似乎只有数据操作函数受到影响(SELECT
, INSERT
, UPDATE
)。
解决方法
前:
后:
编辑:问题出现在 PostgreSQL 9.2 中,但似乎没有出现在 9.3 中。也许它是固定的?
python - 在开发和安装时查找资产文件(C++/Python,主要在 Linux 上)
我的项目有一个/usr/share/openage
包含各种文件(图形、文本等)的全局资产目录()和一个用户特定的资产目录(~/.openage
),允许用户覆盖一些全局资产/添加他们自己的。
我的理解是,在构建时,您将安装前缀传递给构建系统(例如./configure --install-prefix=/usr
),然后生成一个文件(例如configure.h
),该文件使安装前缀可用于代码(例如#define INSTALL_PREFIX="/usr"
)。然后代码将在INSTALL_PREFIX "share/openage"
. 到现在为止还挺好。
但是,当项目尚未安装时(对于我作为开发人员来说,99.9% 的情况都是如此),该目录/usr/share/openage
显然还不存在;相反,我想./assets
在当前目录中使用。更糟糕的是,如果安装的目录存在(例如,来自独立的早期安装),它可能与当前的开发版本不兼容。
同样,如果运行已安装的项目,我希望它使用用户的主目录(~/.openage
)作为用户资产目录,而在“devmode”中,它应该使用像“./userassets”这样的目录。
当考虑非 POSIX 平台时,情况会变得更糟。在 Windows 上,INSTALL_PREFIX
这是无用的,因为程序基本上可以安装在任何地方(程序只是使用当前工作目录还是作为资产目录?),我不知道 Mac 如何处理这个问题。
所以我的问题是:是否有普遍接受的“最好的方法”?当然,数百个项目(基本上每个具有资产目录的项目)都以一种或另一种方式处理了这个问题。
不幸的是,我什至不知道用谷歌搜索什么。我什至不知道如何标记这个问题。当前的想法(和相关问题)包括:
- 查找
openage_version
仅存在于源目录中的文件cwd
. 如果存在,则假定该项目当前已卸载。- 问题:即使在“开发模式”下,
cwd
也可能并不总是项目根目录。
- 问题:即使在“开发模式”下,
- 检查是否
readlink("/proc/self/exe")
以INSTALL_PREFIX
- 问题:特定于平台
- 问题:理论上,项目根目录可能在
/usr/myweirdhomedirectory/git/openage
- 强制开发者指定一个参数
--not-installed
,或者设置一个环境变量,OPENAGE_INSTALLED=0
- 问题:不方便
- 问题:使用错误的资产目录时忘记指定参数会导致混淆
- 在开发过程中,调用
./configure
不同的INSTALL_PREFIX
- 问题:为安装而构建项目时,建议
make test
在未安装项目时运行测试
- 问题:为安装而构建项目时,建议
- 前两个选项的组合:检查
dirname(readlink("proc/self/exe")) + "/openage_version"
- 问题:更加特定于平台
- 这似乎是迄今为止最强大的选择
postgresql - PostgreSQL \dt 命令在 search_path 模式中不显示 *ALL* 表
为什么在 PostgreSQL 中,当不同模式中存在同名表时,\dt
只包含搜索路径中列出的第一个模式中的表,如下例所示?
我感兴趣的是:
这将是可取的原因,以及
给定底层查询
\dt
(见下文),它是如何实际实现的。
(顺便说一句,我从这个答案中意识到,\dt *.*
它将列出每个模式中的每个表——但对于下面的示例,除了我做的两个之外,这给了我 58 个我不想要的系统表!)
例子
查询底层\dt
(当 psql 使用 -E 命令启动时显示,例如 psql -E dt_test)
ios - 尝试在整个 Xcode 工作区中共享代码时出现“无法识别的选择器发送到类”崩溃
重现步骤:
创建一个新的 Xcode 工作区 (WorkspaceTest)。
创建一个名为“One”的单视图项目。
在工作区(不是项目)中,创建一个名为“Shared”的组。在该文件夹中创建一个名为 UIColor+Hex 的类别:
。H:
米:
转到“一个”目标构建设置并将其添加到标题搜索路径:
转到默认的 ViewController.h 并添加以下内容:
该项目编译良好,这意味着它找到了 UIColor+Hex.h。
但是,当它运行时,我得到了这个:
此方法存在于 UIColor+Hex.m 文件中。我还需要做什么?
postgresql - 如何在 Yii2 中设置默认模式
我的 Yii2 是用 PostgreSQL 设置的。我喜欢为每个项目使用模式,而不是每个项目使用单独的数据库。稍后设置的问题是我无法弄清楚如何通过配置选择默认模式“defaultSchema”。
我遇到了迁移表的问题,因为当我运行迁移命令时它默认为“公共”模式。默认的“公共”模式还阻止使用数据库用户的 search_path。尽管我使用“search_path=myschema, public”设置了我的 db 用户,但我仍然无法在没有额外配置的情况下使用迁移,因为在运行时 Yii 会在表名中查找模式,如果没有提供它,则回退到 defaultSchema 所以不管您在数据库用户的 search_path 中拥有的内容仍将使用“public.migrations”。
在 Yii2 中设置默认模式的最佳方法是什么?是否为模式选择指定了任何配置参数?毕竟每个连接都将使用一个模式,最好通过连接配置来设置它。
python - 创建pypy进程
我想创建一个运行 PyPy 的进程。我尝试了以下方法并且有效:
但是,当我删除chdir
as 时:
我得到:
请问,有谁知道如何在不更改工作目录的情况下生成 PyPy 进程?
postgresql - 错误:更新过程 0 的缓存查找失败
我在 PostgreSQL 中有下表
当我尝试在其上运行以下 sql 脚本时,它返回错误:
错误:
我用同一个数据库中的另一个模式对其进行了测试,它工作正常。我的问题是这个模式有很多表和函数。
我创建了一个新模式并使用我的测试表进行了测试,但在恢复转储文件后它不再工作。
我怎样才能解决这个问题?