无法在SQLite中创建数据并将数据插入到表中

5ssjco0h  于 2022-11-14  发布在  SQLite
关注(0)|答案(1)|浏览(271)

我将三个SQLite文件粘贴到基于Windows的本地Apache服务器的D:/Server/sqlite中,打开sqlite3并由.open --new test.sqlite创建test.sqlite
我正在尝试通过以下PHP代码创建一个表并插入数据:

$pdo = new PDO('sqlite:D:\Server\sqlite\test.sqlite');

$pdo->exec('CREATE TABLE IF NOT EXISTS `tablename` (`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255) NOT NULL)');

$insert = $pdo->prepare("INSERT INTO tablename (id, name) VALUES (1, 'Test')");
$insert->execute();
$pdo->lastInsertId();

但我明白一个错误:
致命错误:未捕获错误:对bool调用成员函数Execute()
test.sqlite仍然是空的。怎么了?对于MySQL,这可以很好地工作。

fzsnzjdm

fzsnzjdm1#

CREATE TABLE语句无效,因此未创建表,这意味着INSERT语句失败。
在SQLite中定义整数自动递增列的正确语法为:

id INTEGER PRIMARY KEY

或者:

id INTEGER PRIMARY KEY AUTOINCREMENT

与您的代码的区别在于:

  • 使用数据类型INTEGER(当与关键字AUTOINCREMENT结合使用时,任何其他类型都将引发错误,或者如果缺少该关键字,则不会创建自动递增的列)
  • 在关键字PRIMARY KEY之后使用关键字AUTOINCREMENT(而不是在MySQL中工作的AUTO_INCREMENT)

请参阅demo

相关问题