我将三个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,这可以很好地工作。
1条答案
按热度按时间fzsnzjdm1#
CREATE TABLE
语句无效,因此未创建表,这意味着INSERT
语句失败。在SQLite中定义整数自动递增列的正确语法为:
或者:
与您的代码的区别在于:
INTEGER
(当与关键字AUTOINCREMENT
结合使用时,任何其他类型都将引发错误,或者如果缺少该关键字,则不会创建自动递增的列)PRIMARY KEY
之后使用关键字AUTOINCREMENT
(而不是在MySQL中工作的AUTO_INCREMENT
)请参阅demo。