2014-01-29 18 views
1

所以,我試圖將基於MySQL的數據庫轉換爲PostgreSQL數據庫,並且我得到了一些不太理想的結果。我的代碼開頭的:「使用」命令失敗,PostgreSQL中的語法錯誤(從MySQL轉換)

create database bookmarks; 
use bookmarks; 

但我得到一條錯誤信息:

ERROR: syntax error at or near "use" 
LINE 2: use bookmarks; 
     ^

我老老實實在關於什麼我需要做的,解決這個問題的損失。任何幫助,你可以提供給我,將不勝感激。謝謝。

+0

你是用'psql'手動執行這個操作嗎,還是使用一些編程語言來做到這一點? – CmdrMoozy

+2

MySQL中的數據庫通常更好地映射到Postgres中的模式。值得一提的是,MySQL中的數據庫表現得像模式一樣工作。 MySQL根本沒有選擇這樣稱呼它們(儘管在某些地方,模式和數據庫是MySQL中的同義詞 - 非常令人困惑) –

+0

請嘗試在可能的地方使用更具體的題目,btw。 '馬'也是對的;如果您正在切換數據庫,您可能希望在一個數據庫中使用模式並使用'search_path'在它們之間進行交換。 –

回答

5

在PostgreSQL中,您連接到啓動到服務器的連接時要使用的特定數據庫。您需要如何做到這一點完全取決於您使用的語言/環境。

如果您使用psql命令行工具手動執行此操作,那麼MySQL中的USE mydatabase;等同於PostgreSQL中的\c mydatabase;

編輯:在PHP中,如果你想創建一個新的數據庫,然後連接到它,你會做到以下幾點:使用

  1. 連接到服務器現有的數據庫 - template1postgres是常見的選擇。使用此連接執行CREATE DATABASE bookmarks;

  2. 創建新的連接到你剛剛創建的數據庫,用new PDO("pgsql:host=localhost;port=5432;dbname=bookmarks;user=myuser;password=mypassword");(更換您的特定值的DSN參數可以根據需要,當然)。

現在你連接到新的數據庫,並執行任何疑問將會對bookmarks執行。無需執行USE bookmarks;或其他任何東西。

+0

我實際上是使用PHP實現數據庫。我嘗試通過以下代碼行來執行此操作: – user3076531

+0

<?php function db_connect() {result = new PDO(「pgsql:dbname ='bookmarks'; host ='localhost','bm_user' , '密碼');! 如果($結果) 拋出新的異常( '無法連接到數據庫服務器'); 否則 返回$結果;? } > – user3076531