gpt4 book ai didi

php - PDO 似乎没有创建 MySQL 数据库

转载 作者:行者123 更新时间:2023-11-29 02:25:27 25 4
gpt4 key购买 nike

我正在尝试使用以下代码创建数据库:

// Set up DB connection and creates the DB
try {

$connection = new \PDO(
'mysql:host='.Settings\Database::$host.';',
Settings\Database::$username,
Settings\Database::$password);

$connection->exec("CREATE DATABASE IF NOT EXISTS ".Settings\Database::$databaseName." CHARACTER SET utf8 COLLATION utf8_unicode_ci;");
} catch (\PDOException $exception) {

die("Could not connect to database: ".$exception->getMessage());
}

问题是没有创建数据库,我没有收到任何错误,除了当我尝试使用 PDO 创建表时收到此错误:

阅读编辑 2

Could not connect to database: SQLSTATE[HY000] [1049] Unknown database 'dbname'

编辑:

我可以使用 phpMyAdmin 和类似工具手动创建数据库。

编辑 2:

我误以为错误是由CREATE TABLE...语句给出的。相反,错误由异常处理中的 die() 函数返回。

最佳答案

您对 exec() 的调用没有抛出异常。您必须为每个具有如下属性的 PDO 连接启用它:

$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

如果您从 exec() 收到错误消息,您会看到:

Could not connect to database: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COLLATION utf8_unicode_ci' at line 1

CREATE DATABASE 的语法使用关键字 COLLATE,而不是 COLLATION

参见 http://dev.mysql.com/doc/refman/5.6/en/create-database.html

关于php - PDO 似乎没有创建 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22967739/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com