PostGreSQL使用PDO PHP创建表
我尝试在PostgreSQL datatable中通过执行以下createTables函数创建一个简单的表:PostGreSQL使用PDO PHP创建表,php,postgresql,pdo,Php,Postgresql,Pdo,我尝试在PostgreSQL datatable中通过执行以下createTables函数创建一个简单的表: public function createTables() { try { $db = new PDO('pgsql:host='.$this->PARAM_hote.';port='.$this->PARAM_port.';dbname='.$this->PARAM_nom_bd.';user='.$this->
public function createTables() {
try {
$db = new PDO('pgsql:host='.$this->PARAM_hote.';port='.$this->PARAM_port.';dbname='.$this->PARAM_nom_bd.';user='.$this->PARAM_utilisateur.';password='.$this->PARAM_mot_passe);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql ='CREATE TABLE IF NOT EXISTS test (id INT(11) AUTO_INCREMENT PRIMARY KEY, prename VARCHAR(50) NOT NULL);';
$db->exec($sql);
} catch(PDOException $e) {
echo $e->getMessage();
}
}
但我仍然有:
testSQLSTATE[42601]: Syntax error: 7 ERREUR: erreur de syntaxe sur ou près de « ( » LINE 1: CREATE TABLE IF NOT EXISTS test (id INT(11) AUTO_INCREMENT P... ^
我不知道为什么
感谢您的帮助postgresql中没有自动增量。相反,请使用
串行
。而整数
类型始终为4字节
test (id serial PRIMARY KEY,
serial
类型表示带有notnull
约束和附加序列的整数
postgresql中没有自动增量。相反,请使用
串行
。而整数
类型始终为4字节
test (id serial PRIMARY KEY,
serial
类型表示带有notnull
约束和附加序列的整数
天哪,本地化的错误消息太糟糕了:你正在使用MySQL语法。别指望这在PostgreSQL中会起作用。天哪,本地化的错误消息很糟糕:你正在使用MySQL语法。不要期望这在PostgreSQL中起作用。感谢Clodoaldo Neto,但是$sql='CREATE TABLE IF NOT EXISTS test(id INT PRIMARY KEY,prename VARCHAR(50)NOT NULL);';工作,但不自动递增,但$sql='CREATE TABLE IF NOT EXISTS test(id INT serial PRIMARY KEY,prename VARCHAR(50)NOT NULL);';将错误返回到:SQLSTATE[42601]:语法错误:7 ERREUR:ERREUR de Syntax sur ou près de«serial»第1行:创建表如果不存在测试(id INT serial PRIMARY KEY,^.Bigint是8字节。在MySQL中,
INT(11)
给出了关于最大显示宽度(11个字符)的提示.@MikeSherrill'CatRecall'绝对正确。谢谢。@Macbernie Ok,修复了。谢谢Clodoaldo Neto,但是$sql='CREATE TABLE IF NOT EXISTS test(id INT PRIMARY KEY,prename VARCHAR(50)NOT NULL);';工作,但是不带自动递增,但是$sql='CREATE TABLE IF NOT EXISTS test(id INT serial PRIMARY KEY,prename VARCHAR(50)NOT NULL);';返回一个错误到:SQLSTATE[42601]:语法错误:7 ERREUR:ERREUR de Syntax sur ou près de«serial»第1行:创建表如果不存在测试(id INT serial PRIMARY KEY,^.Bigint是8字节。在MySQL中,INT(11)
给出了关于最大显示宽度(11个字符)的提示.@MikeSherrill'CatRecall'完全正确。谢谢。@Macbernie好的,修复了。