为什么这个PHP / SQL不能创建表?

时间:2012-04-11 21:17:29

标签: php mysql sql pdo

<?php
try {
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
  $sql = $DBH->exec("
    CREATE TABLE `store_config` (
    store_name varchar(30),
    last_update date)
    ");
} catch (PDOException $e) {
  echo "Could not connect to database.";
  $DBH = null;
}
?>

不抛出PDOException,可能存在SQL错误,但我不知道如何检索该错误,当我用phpMyAdmin检查数据库时,没有创建表。我做错了什么?

感谢阅读。

修改 当我将相同的SQL代码直接执行到phpMyAdmin时,它给出了权限被拒绝错误...

1142 - 对表'store_config'的用户'$ user'@'$ my_ip'拒绝CREATE命令

我很困惑,因为当我使用web主机Web表单创建用户时,它没有给我选项来授予任何权限,只是为了让这个用户成为数据库所有者 - 这就是我必须做的事情吗?

修改

我给了我的用户帐号'DBO access',它现在可以正常工作(创建了表格)。

感谢您的评论。

2 个答案:

答案 0 :(得分:1)

试试这个。它应该让你得到你正在寻找的错误,它将告诉你最新情况。

<?php
try {
  $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
  $sql = $DBH->exec("
    CREATE TABLE `store_config` (
    store_name varchar(30),
    last_update date)
    ") or die(print_r($DBH->errorInfo(), true));
} catch (PDOException $e) {
  echo "Could not connect to database.";
  $DBH = null;
}
?>

答案 1 :(得分:0)

您需要找到一种方法,从您运行代码的计算机向用户授予创建权限。用户可能只拥有localhost的权限,因此您必须将代码上传到服务器并在那里运行以获得权限。