heroku postgresql db-部署后无法更新数据库

km0tfn4u  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(298)

我正在使用heroku部署我的postgresql数据库项目。我使用php、html5和css创建的站点在带有phpmyadmin和等效mysql数据库的localhost上运行良好。但是,当我将它转移到heroku时,只有select查询起作用(插入、更新和删除都不好)。
从localhost到heroku站点的唯一变化是在my.env和文件中创建我粘贴在下面的php数据对象。有人能告诉我下一步该去哪里解决这个问题吗?heroku错误日志不显示任何错误。我在用pgadmin4做postgres数据库。
.env文件 DATABASE_URL="pgsql://postgres:mypassword@localhost:5432/dbname" 其他文件

require __DIR__ . '/vendor/autoload.php';

$dbopts = parse_url(getenv('DATABASE_URL'));

$dbopts["path"] = ltrim($dbopts["path"], "/");

$db = new PDO("pgsql:" . sprintf(
"host=%s;port=%s;user=%s;password=%s;dbname=%s",
$dbopts["host"],
$dbopts["port"],
$dbopts["user"],
$dbopts["pass"],
ltrim($dbopts["path"], "/")
));
wa7juj8i

wa7juj8i1#

问题解决方案:
phpmyadmin只支持mysql,而我使用了heroku的免费postgres插件。从phpmyadmin本地迁移到heroku显示了两种语言在语法上的细微差异。
我的特殊错误与mysql属性中的大写字母在postgres中被还原为所有小写字母有关。我的一个函数中的示例:
mysql版本:

$sql = "SELECT DISTINCT ID FROM Doctors";
$query = $db->prepare($sql); 
$query->execute(); 
$results = $query->fetchAll(\PDO::FETCH_ASSOC); 
$did = array_column($results, 'ID');
$docid = implode(",", $did);

postgres版本:

$sql = "SELECT DISTINCT ID FROM Doctors";
$query = $db->prepare($sql); 
$query->execute(); 
$results = $query->fetchAll(\PDO::FETCH_ASSOC); 
$did = array_column($results, 'id');   // difference
$docid = implode(",", $did);

如果不是uni项目,我会使用phppgadmin而不是phpmyadmin来避免迁移差异。谢谢克里斯和哈弗!

相关问题