PostGreSQL使用PDO PHP创建表

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->

我尝试在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->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好的,修复了。