2013-03-20 96 views
1

我有这个PHP脚本在MAC Snow Leopard上创建数据库。当我尝试打开创建我同时获得来自SQLite数据库浏览器的错误消息.sqlite 2.0 B1(“发生错误:文件不是一个SQLite 3数据库”)和Firefox SQLite的经理(“的SQLiteManager:错误打开文件forum.sqlite - 文件被加密或损坏例外名称:NS_ERROR_FILE_CORRUPTED 异常消息:组件返回失败代码:0x8052000b(NS_ERROR_FILE_CORRUPTED)[mozIStorageService.openUnsharedDatabase]“)。这是我的脚本PHP脚本创建损坏的SQLite数据库

<?php 

$dbhandle = sqlite_open('forum.sqlite', $error); 
if (!$dbhandle) die ($error); 

$stm1 = 'CREATE TABLE author' .'(
      id INTEGER PRIMARY KEY, 
      name TEXT, 
      url TEXT 
      )'; 

$ok1 = sqlite_exec($dbhandle, $stm1, $error); 

if (!$ok1) 
    die("Cannot execute query. $error"); 

echo "Table author created successfully"."\n"; 

$stm2 = 'CREATE TABLE thread' .'(
      id INTEGER PRIMARY KEY, 
      authorId INTEGER, 
      title TEXT, 
      reactions INTEGER, 
      dislikes INTEGER, 
      userScore INTEGER, 
      createdAt DATETIME, 
      slug TEXT, 
      postNumber INTEGER, 
      link TEXT, 
      likes INTEGER, 
      message TEXT, 
      category INTEGER, 
      score INTEGER, 
      categoryLink TEXT, 
      FOREIGN KEY(authorId) REFERENCES author(id) 
      )'; 

$ok2 = sqlite_exec($dbhandle, $stm2, $error); 

if (!$ok2) 
    die("Cannot execute query. $error"); 

echo "Table thread created successfully"."\n"; 

$stm3 = 'CREATE TABLE commentAuthor' .'(
      authorUrl TEXT PRIMARY KEY, 
      name TEXT 
      )'; 

$ok3 = sqlite_exec($dbhandle, $stm3, $error); 

if (!$ok3) 
    die("Cannot execute query. $error"); 

echo "Table commentAutor created successfully"."\n"; 

$stm4 = 'CREATE TABLE comment' .'(
      id INTEGER PRIMARY KEY, 
      threadId INTEGER, 
      forum TEXT, 
      parent INTEGER, 
      authorUrl TEXT, 
      dislikes INTEGER, 
      rawMEssage TEXT, 
      createdAt DATETIME, 
      numReports INTEGER, 
      likes INTEGER, 
      message TEXT, 
      FOREIGN KEY(threadId) REFERENCES thread(id), 
      FOREIGN KEY(authorUrl) REFERENCES commentAuthor(authorUrl) 
      )'; 

$ok4 = sqlite_exec($dbhandle, $stm4, $error); 

if (!$ok4) 
    die("Cannot execute query. $error"); 

echo "Table comment created successfully"."\n"; 

sqlite_close($dbhandle); 

?> 

脚本运行正常,我收到确认表创建。

回答

2

这些sqlite_ *函数创建SQLite 2数据库。

对于SQLite 3数据库,请使用PDO。

或PDO来代替
+0

谢谢你,这就是了。 – CptNemo 2013-03-20 11:40:45