2015-05-31 42 views
1

我正在使用yaml_db創業板將我的數據庫從PHP/mySQL遷移至RoR/Postgres。我讓我的輸入YAML文件的在線1555870上面的錯誤(〜4M的)當我運行:第1行不允許使用心理控制字符1

bundle exec rake db:data:load RAILS_ENV=production 

這似乎是行或大小依賴 - 我已經將範圍縮小到這一行,目前上有一個評論:

​​

堆棧跟蹤:

rake aborted! 
Psych::SyntaxError: (<unknown>): control characters are not allowed at line 1 column 1 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/yaml_db-0.3.0/lib/yaml_db.rb:61:in `load_documents' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/yaml_db-0.3.0/lib/serialization_helper.rb:57:in `block in load' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:188:in `within_new_transaction' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/yaml_db-0.3.0/lib/serialization_helper.rb:56:in `load' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/yaml_db-0.3.0/lib/serialization_helper.rb:31:in `load' 
/home/signup/app/releases/11/vendor/bundle/ruby/2.1.0/gems/yaml_db-0.3.0/lib/tasks/yaml_db_tasks.rake:35:in `block (3 levels) in <top (required)>' 
Tasks: TOP => db:data:load 
(See full trace by running task with --trace) 

任何想法?

+1

有一些不可見的控制字符滑入YAML?你能否給這個YAML的那塊大塊看看有沒有奇怪的東西出現? –

+0

好建議@mu,但我看到的都是'$'行結束符。 –

+1

任何你不只是從MySQL中傾銷CSV並在PostgreSQL中做COPY來加載數據的原因?您必須手動重寫模式,但這不應該那麼困難。或者也許看看其他不使用YAML的工具,對於這樣的任務,YAML似乎是一個非常奇怪的選擇。 –

回答

1

該錯誤具有誤導性,但您提供的示例是不正確的YAML,並且應在任何解析器中引發錯誤。在一些在線解析器(基於python)中,您可以輕鬆地檢查提供文本時,withwithout的註釋。

問題是,在該縮進行的開頭應該有一個破折號(如果破折號不在行的開始位置,您可以選擇以塊的形式完成順序)。

+0

我認爲'breakrighthere'這個東西只是一個添加的調試助手的標記,我不認爲它是YAML的一部分,這個工具正在傾倒。 –

+0

@ muistooshort我認爲,但我認爲在這種情況下,OP可能只是將該行註釋掉以獲得相同的效果。或者只是在一行中指出整個事情:'#在這之前的行#這裏事情出錯' – Anthon

+0

謝謝安東,但@mu是正確的。我想我應該解釋一下,但我認爲這很明顯。我得到了這個無用的錯誤信息,然後通過使用「breakrighthere」的「二進制搜索」找出它發生的位置。 –

1

我有同樣的錯誤,並希望能幫助將來可能會看到這個錯誤的人,最終會出現空白錯誤。

我已經在多個應用程序中打開了該文件,並且它改變了選項卡的空間量。

首先檢查間距!這是最容易解決的問題,如果這最終成爲問題!

相關問題