아마 내가 뭔가를 잘못하고 있어요하지만 여기 간다 : 내가 OracleXE 버전 10.2.0.1.0에서 subsonic.migrations을 사용하여 데이터베이스를 만들려고 해요subsonic.migrations 오라클 XE
. ODP v 10.2.0.2.20을 설치했습니다.
이
내의 app.config입니다 :<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="SubSonicService" type="SubSonic.SubSonicSection, SubSonic" requirePermission="false"/>
</configSections>
<connectionStrings>
<add name="test" connectionString="Data Source=XE; User Id=test; Password=test;"/>
</connectionStrings>
<SubSonicService defaultProvider="test">
<providers>
<clear/>
<add name="test" type="SubSonic.OracleDataProvider, SubSonic" connectionStringName="test" generatedNamespace="testdb"/>
</providers>
</SubSonicService>
</configuration>
그리고 내 첫 이주의 :
Setting ConfigPath: 'App.config'
Building configuration from D:\Users\carlucci\Documents\Visual Studio 2008\Projects\Wum\Wum.Migration\App.config
Adding connection to test
ERROR: Trying to execute migrate
Error Message: System.Data.OracleClient.OracleException: ORA-02253: especifica‡Æo de restri‡Æo nÆo permitida aqui
at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
at System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
at System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
at SubSonic.OracleDataProvider.ExecuteQuery(QueryCommand qry) in D:\@SubSonic\SubSonic\SubSonic\DataProviders\OracleDataProvider.cs:line 350
at SubSonic.DataService.ExecuteQuery(QueryCommand cmd) in D:\@SubSonic\SubSonic\SubSonic\DataProviders\DataService.cs:line 544
at SubSonic.Migrations.Migrator.CreateSchemaInfo(String providerName) in D:\@SubSonic\SubSonic\SubSonic.Migrations\Migrator.cs:line 249
at SubSonic.Migrations.Migrator.GetCurrentVersion(String providerName) in D:\@SubSonic\SubSonic\SubSonic.Migrations\Migrator.cs:line 232
at SubSonic.Migrations.Migrator.Migrate(String providerName, String migrationDirectory, Nullable`1 toVersion) in D:\@SubSonic\SubSonic\SubSonic.Migrations\Migrator.cs:line 50
at SubSonic.SubCommander.Program.Migrate() in D:\@SubSonic\SubSonic\SubCommander\Program.cs:line 264
at SubSonic.SubCommander.Program.Main(String[] args) in D:\@SubSonic\SubSonic\SubCommander\Program.cs:line 90
Execution Time: 379ms
: 나는 sonic.exe을 실행하면
public class Migration001_Init : Migration {
public override void Up() {
//Create the records table
TableSchema.Table records = CreateTable("asdf");
records.AddColumn("RecordName");
}
public override void Down() {
DropTable("asdf");
}
}
, 나는이 예외가
내가 뭘 잘못하고 있니?
감사합니다 도움 :
앙드레 칼 루치
UPDATE에 대한 많은 : 안톤에 의해 지적 이 문제는 아음속 OracleSqlGenerator입니다. 이 SQL을 사용하여 스키마 테이블을 만들려고합니다 :
CREATE TABLE SubSonicSchemaInfo (
version int NOT NULL CONSTRAINT DF_SubSonicSchemaInfo_version DEFAULT (0)
)
다음은 oracle에서 작동하지 않습니다. 올바른 SQL은 다음과 같습니다
CREATE TABLE SubSonicSchemaInfo (
version int DEFAULT (0),
constraint DF_SubSonicSchemaInfo_version primary key (version)
)
재미있는 것은이 아음속 마이그레이션에 의해 실행 된 첫 번째 SQL 때문에, 아무도 오라클에 그것을 테스트 없다는 것입니다.
네가 맞아! 단계별로 디버깅을 한 결과 아음속이 SQL을 완전히 오라클에 사용하고있는 것을 볼 수있었습니다. 고맙습니다! – andrecarlucci