- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
设置- PHP 7 应用程序。- Postgres 在 Heroku Hobby v11.x 上- MySQL 版本为 v5.5.56 和协议(protocol) 10- 我对 PHP 不是很了解- 我对较低级别的 Postgres 转换不是很了解。
我使用 pgloader 从 MySQL 迁移到 Postgres。
pgloader --dry-run --with 'create indexes' --with 'create indexes' --with 'foreign keys' --with 'downcase identifiers' --with 'create tables' --with 'include drop' mysql://<<hidden>>@us-cdbr-iron-east-03.cleardb.net/heroku_509e1e230baf4be postgres://<<hidden>>@ec2-23-21-177-102.compute-1.amazonaws.com:5432/dflfjbhhq18cav?sslmode=require
我知道连接正常。在用 Postgres 交换 MySQL 函数后,一些查询正在工作 - 我知道这一点,因为我可以看到数据填充。我还必须进行一些调整才能使查询正常工作。
复制字段的查询具有有效的 SQL 语句,但出现以下错误。我知道查询很好,因为我已经将其回显并将其粘贴到我的 Navicat SQL 窗口中,它会产生正确的结果。
pg_query(): Query failed: ERROR: permission denied for table campaigns
DB 用户似乎拥有访问 campaigns
表并获得所需内容的所有适当权限。
我继续寻找另一个非常奇怪的问题。
无论我使用什么来尝试使用有效的 SQL 语句通过 PHP 运行查询,我都没有得到任何数据。
-pg_pquery-pg_fetch_array-pg_query_params-pg_fetch_array
请参阅下面的代码示例。
//Get the existing number of quota_deducted
$q = 'SELECT app, quota_deducted FROM campaigns WHERE id = '.$campaign_id;
$r = pg_query($mysqli, $q);
if ($r)
{
while($row = pg_fetch_array($r))
{
$app = $row['app'];
$current_quota_deducted = $row['quota_deducted']=='' ? 0 : $row['quota_deducted'];
}
//Check if monthly quota needs to be updated
$q2 = 'SELECT allocated_quota, current_quota FROM apps WHERE id = '.$app;
$r2 = pg_query($mysqli, $q2);
if($r2)
{
while($row2 = pg_fetch_array($r2))
{
$allocated_quota = $row2['allocated_quota'];
$current_quota = $row2['current_quota'];
}
}
$updated_quota = $current_quota - $current_quota_deducted;
//Update quota if a monthly limit was set
if($allocated_quota!=-1)
{
//if so, update quota
$q3 = 'UPDATE apps SET current_quota = '.$updated_quota.' WHERE id = '.$app;
pg_query($mysqli, $q3);
}
}
我在 apache2 终端窗口的尾随日志中看到错误,但在数据库 pgAdmin 上看不到任何实际连接或事件。
Heroku DB 上的日志似乎也没有输入?不确定这是否是因为它只是一个业余爱好。
我已经检查了所有明显的东西,比如确保我们连接到正确的数据库等等。
使用 Navicate 时,我在尝试调用表设计函数时遇到了以前从未见过的错误。我收到以下错误。不确定这是否对上述问题有影响。我能够测试其他相同版本的 Postgres,发现下面的错误不存在。所以也许 pgloader 正在创建一些无法解决的低级别问题。
ERROR: Column "proisagg" doe snot exist
LINE 1: ...e JOIN pg_language lng ON lng.oid=p.prolang WHERE proisagg = ..
HINT: Perhaps you meant to reference the column "p.prolang".
这是我们尝试运行的查询。这在 Navicat 中有效。
INSERT INTO campaigns (userid, app, from_name, from_email, reply_to, title, label, plain_text, html_text, query_string, bounce_setup, complaint_setup, wysiwyg, opens_tracking, links_tracking) VALUES (2, 152, 'Person Name', 'campaignsupport@company.com', 'campaignsupport@company.com', 'Test', '', 'Test plain text.', 'asdf', '', 0, 0, 1, 1, 1)
或
INSERT INTO public.campaigns (userid, app, from_name, from_email, reply_to, title, label, plain_text, html_text, query_string, bounce_setup, complaint_setup, wysiwyg, opens_tracking, links_tracking) VALUES (2, 152, 'Person Name', 'campaignsupport@company.com', 'campaignsupport@company.com', 'Test', '', 'Test plain text.', 'asdf', '', 0, 0, 1, 1, 1)
在过去的 20 个小时里,我一直在研究这个问题,但我很困惑任何帮助或想法都会被大大浪费。
最诚挚的问候,
凯西哈弗纳
最佳答案
您的问题包含一大堆问题,但信息不够完全解决其中任何一个,所以我会尝试提供一些故障排除步骤这可能会帮助您找到解决方案。
命令:
INSERT INTO campaigns (userid, app, from_name, from_email, reply_to, title, label, plain_text, html_text, query_string, bounce_setup, complaint_setup, wysiwyg, opens_tracking, links_tracking) VALUES (2, 152, 'Person Name', 'campaignsupport@company.com', 'campaignsupport@company.com', 'Test', '', 'Test plain text.', 'asdf', '', 0, 0, 1, 1, 1)
因错误而失败:
pg_query(): Query failed: ERROR: permission denied for table campaigns
但是当你在 Navicat 中运行它时,你可以执行这个 SQL 命令。
在您所描述的上下文中,只有几个原因导致此错误可能发生:
您没有使用具有所需权限的用户连接到数据库(可能不是您认为自己所连接的用户)。检查哪个您与问题查询相关的用户:
SELECT current_user;
在您的应用程序中,在失败查询之前立即发出此消息,使用与失败查询相同的连接。记录输出在某个地方你可以看到它 - 例如。 apache 错误日志。
从 Navicat 发出相同的查询以查看那里使用的用户。如果不是与应用程序正在使用的相同,然后与同一用户重新连接并查看如果查询仍然失败。
该表没有您认为它拥有的权限授予。
我不熟悉 Navicat:它可能提供检查表的权限。如果没有(或者如果它不工作,见下文)那么您可以使用 psql
命令行工具进行连接并使用命令 \z campaigns
查看表格中的赠款集。
您访问的不是您认为是的表格,也许是需要与您认为正在访问的权限不同的权限。如果架构路径生成相同的表,则可能会发生这种情况正在选择不同模式中的名称。但是我不认为这是发生是因为您提到您已尝试指定完全合格的名称 public.campaigns
。
您没有连接到正确的数据库。您声明您已检查这 - 如果你已经达到这一点但仍然没有找到我建议的原因再次检查!
No matter what I use to try to run a query with PHP with a valid SQL statement, I'm getting no data back.
简化后,您的代码如下所示:
$r = pg_query($mysqli, $q);
if ($r)
{
// do something
}
我不是 php 专家,但是查看 pg_query
的文档我发现了它说:
If an error occurs, and FALSE is returned, details of the error can be retrieved using the pg_last_error() function if the connection is valid.
您没有检查任何错误情况。我猜想查询正在失败,可能存在上述相同的权限问题。我建议在调用 pg_last_error()
并显示的代码中添加一个 else
子句结果。
Navicat 显示这个错误:
ERROR: Column "proisagg" doe snot exist
LINE 1: ...e JOIN pg_language lng ON lng.oid=p.prolang WHERE proisagg = ..
HINT: Perhaps you meant to reference the column "p.prolang".
直到 postgresql 11,内部 postgresql 表 pg_proc
包含一列proisagg
如果该行表示聚合函数,则为真。
从 Postgresql 11 开始,该列被替换为 prokind
列具有不同的值来描述该行是否表示聚合函数,窗口函数,普通函数或过程。
如上所述,我对 Navicat 不熟悉,但我猜您正在使用的版本尚未更新以考虑此更改。
关于MySQL 到 Postgres 转换后 PHP 查询不工作 + 奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57138732/
我已经使用 vue-cli 两个星期了,直到今天一切正常。我在本地建立这个项目。 https://drive.google.com/open?id=0BwGw1zyyKjW7S3RYWXRaX24tQ
您好,我正在尝试使用 python 库 pytesseract 从图像中提取文本。请找到代码: from PIL import Image from pytesseract import image_
我的错误 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss mismatches non-TLS reference
我已经训练了一个模型,我正在尝试使用 predict函数但它返回以下错误。 Error in contrasts<-(*tmp*, value = contr.funs[1 + isOF[nn]])
根据Microsoft DataConnectors的信息我想通过 this ODBC driver 创建一个从 PowerBi 到 PostgreSQL 的连接器使用直接查询。我重用了 Micros
我已经为 SoundManagement 创建了一个包,其中有一个扩展 MediaPlayer 的类。我希望全局控制这个变量。这是我的代码: package soundmanagement; impo
我在Heroku上部署了一个应用程序。我正在使用免费服务。 我经常收到以下错误消息。 PG::Error: ERROR: out of memory 如果刷新浏览器,就可以了。但是随后,它又随机发生
我正在运行 LAMP 服务器,这个 .htaccess 给我一个 500 错误。其作用是过滤关键字并重定向到相应的域名。 Options +FollowSymLinks RewriteEngine
我有两个驱动器 A 和 B。使用 python 脚本,我在“A”驱动器中创建一些文件,并运行 powerscript,该脚本以 1 秒的间隔将驱动器 A 中的所有文件复制到驱动器 B。 我在 powe
下面的函数一直返回这个错误信息。我认为可能是 double_precision 字段类型导致了这种情况,我尝试使用 CAST,但要么不是这样,要么我没有做对...帮助? 这是错误: ERROR: i
这个问题已经有答案了: Syntax error due to using a reserved word as a table or column name in MySQL (1 个回答) 已关闭
我的数据库有这个小问题。 我创建了一个表“articoli”,其中包含商品的品牌、型号和价格。 每篇文章都由一个 id (ID_ARTICOLO)` 定义,它是一个自动递增字段。 好吧,现在当我尝试插
我是新来的。我目前正在 DeVry 在线学习中级 C++ 编程。我们正在使用 C++ Primer Plus 这本书,到目前为止我一直做得很好。我的老师最近向我们扔了一个曲线球。我目前的任务是这样的:
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我的网站中有一段代码有问题;此错误仅发生在 Internet Explorer 7 中。 我没有在这里发布我所有的 HTML/CSS 标记,而是发布了网站的一个版本 here . 如您所见,我在列中有
如果尝试在 USB 设备上构建 node.js 应用程序时在我的树莓派上使用 npm 时遇到一些问题。 package.json 看起来像这样: { "name" : "node-todo",
在 Python 中,您有 None单例,在某些情况下表现得很奇怪: >>> a = None >>> type(a) >>> isinstance(a,None) Traceback (most
这是我的 build.gradle (Module:app) 文件: apply plugin: 'com.android.application' android { compileSdkV
我是 android 的新手,我的项目刚才编译和运行正常,但在我尝试实现抽屉导航后,它给了我这个错误 FAILURE: Build failed with an exception. What wen
谁能解释一下?我想我正在做一些非常愚蠢的事情,并且急切地等待着启蒙。 我得到这个输出: phpversion() == 7.2.25-1+0~20191128.32+debian8~1.gbp108
我是一名优秀的程序员,十分优秀!